SQL 日期操作

SQL 日期

在处理日期时,最困难的部分是确保要插入的日期格式与数据库中日期列的格式相匹配。

只要您的数据仅包含日期部分,您的查询就会按预期工作。但是,如果涉及时间部分,它就会变得更复杂。

SQL 日期数据类型

MySQL 数据库使用以下数据类型在数据库中存储日期或日期时间值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MI:SS
  • YEAR - 格式 YYYY 或 YY

SQL Server 数据库使用以下数据类型在数据库中存储日期或日期时间值:

  • DATE - 格式 YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME - 格式:YYYY-MM-DD HH:MI:SS
  • TIMESTAMP - 格式:一个唯一的数字

注意:请在数据库中创建新表时为列选择日期类型!

SQL 日期操作

请看下面的表格:

Orders 表

OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29

现在,我们想从上面的表中选择 OrderDate 为 "2008-11-11" 的记录。

我们使用以下 SELECT 语句:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

结果集将如下所示:

OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11

注意:如果没有涉及时间组件,则可以轻松比较两个日期!

现在,假设 "Orders" 表如下所示(请注意 "OrderDate" 列中添加的时间组件):

OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 Camembert Pierrot 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59

如果我们使用与上述相同的 SELECT 语句:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

我们将无法得到结果!这是因为查询只寻找没有时间部分的日期。

提示:为了使查询简单且易于维护,请不要在日期中使用时间组件,除非必须这样做!