SQL日期
使用日期时,最困难的部分是要确保你正在试图插入日期的格式,在数据库中日期列的格式相匹配。
MySQL的日期函数
下表列出了在MySQL中最重要的内建日期函数:
功能 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前日期 |
CURTIME() | 返回当前时间 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回的一个日期/时间的单个部分 |
DATE_ADD() | 添加一个指定的时间间隔为日期 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回天两个日期之间的数 |
DATE_FORMAT() | 显示日期/不同格式的时间数据 |
SQL Server的日期函数
下表列出了在SQL Server的最重要的内置的日期的功能:
功能 | 描述 |
---|---|
GETDATE() | 返回当前的日期和时间 |
DATEPART() | 返回的一个日期/时间的单个部分 |
DATEADD() | 添加或从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 显示日期/不同格式的时间数据 |
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 - 格式:一个唯一的编号
Note:日期类型为列选择当您在数据库中创建新表!
有关可用的所有数据类型的概述,请访问我们完整的数据类型参考 。
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 | 卡门培尔皮埃罗 | 2008-11-09十五点45分21秒 |
3 | 莫扎里拉吉奥瓦尼 | 2008-11-11 11点12分01秒 |
4 | 马斯卡Fabioli | 2008-10-29 14时56分59秒 |
如果我们用同样的SELECT语句如上:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
我们会得到任何结果! 这是因为在查询正在仅与没有时间部分日期。
Tip:如果你要保持你的查询简单,易于维护,不要让你的日期时间部分!