SQL Date-funktio
SQL päivämäärä
Kun käsittelemme päivämääriä, vaikein tehtävä on varmistaa, että syötetyn päivämäärän muoto vastaa tietokannan päivämäärä列in muotoa.
Jos tieto sisältää vain päivämääräosan, kysely sujuu ilman ongelmia. Mutta jos kyseessä on aika, tilanne on hieman monimutkaisempi.
Ennen kuin käsittelemme päivämääräkyselyjen monimutkaisuutta, tarkastellaan ensin tärkeimpiä sisäänrakennettuja päivämääräkäsittelyfunktioita.
MySQL Date -funktiot
Seuraava taulukko lukee MySQL:n tärkeimmät sisäänrakennetut päivämääräfunktiot:
Funktio | Kuvaus |
---|---|
NOW() | Palauta nykyinen päivämäärä ja aika |
CURDATE() | Palauta nykyinen päivämäärä |
CURTIME() | Palauta nykyinen aika |
DATE() | Eristä päivämäärä tai päivämäärä/aikaväli -ilmauksen päivämääräosa |
EXTRACT() | Palauta päivämäärän/aikavälin yksittäiset osat |
DATE_ADD() | Lisää määritetty aikaväli päivämäärään |
DATE_SUB() | Vähennä määritetty aikaväli päivämäärästä |
DATEDIFF() | Palauta kahden päivämäärän välillä olevat päivät |
DATE_FORMAT() | Näytä päivämäärä/aikaväli eri muodoissa |
SQL Server Date -funktiot
Seuraava taulukko lukee SQL Serverin tärkeimmät sisäänrakennetut päivämääräfunktiot:
Funktio | Kuvaus |
---|---|
GETDATE() | Palauta nykyinen päivämäärä ja aika |
DATEPART() | Palauta päivämäärän/aikavälin yksittäiset osat |
DATEADD() | Lisää tai vähennä määritetty aikaväli päivämäärään |
DATEDIFF() | Palauta kahden päivämäärän välillä oleva aika |
CONVERT() | Näytä päivämäärä/aikaväli eri muodoissa |
SQL Date -tietotyyppi
MySQL käyttää seuraavia tietotyyppejä tallentaakseen päivämäärät tai päivämäärä/aikavälierot tietokannassa:
- DATE - 格式 YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
- YEAR - 格式 YYYY 或 YY
SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:
- DATE - 格式 YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: 唯一的数字
SQL 日期处理
如果不涉及时间部分,那么我们可以轻松地比较两个日期!
假设我们有下面这个 "Orders" 表:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
现在,我们希望从上表中选取 OrderDate 为 "2008-12-26" 的记录。
我们使用如下 SELECT 语句:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
结果集:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
现在假设 "Orders" 类似这样(请注意 "OrderDate" 列中的时间部分):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
如果我们使用上面的 SELECT 语句:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
那么我们得不到结果。这是由于该查询不含有时间部分的日期。
提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!