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'
我们不会得到任何结果!这是因为查询仅查找没有时间部分的日期。
提示:为了使您的查询简单易维护,请不要在日期中添加时间组件!