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'

那么我们得不到结果。这是由于该查询不含有时间部分的日期。

提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!