SQL 日期
当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
MySQL Date函数
下面的表格列出了 MySQL 中最重要的内建日期函数:
函数 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回日期/时间的单独部分 |
DATE_ADD() | 给日期添加指定的时间间隔 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
DATE_FORMAT() | 用不同的格式显示日期/时间 |
SQL Server Date函数
下面的表格列出了 SQL Server 中最重要的内建日期函数:
函数 | 描述 |
---|---|
GETDATE() | 返回当前的日期和时间 |
DATEPART() | 返回当前的日期/时间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
CONVERT() | 用不同的格式显示日期/时间 |
使用举例:
获取当前日期前一天:select date_sub(curdate(),interval 1 day)
获取当前日期后一天:select date_sub(curdate(),interval -1 day)
获取当前时间后一月:select date_add(CURDATE(), interval 1 month)
使用DATE_FORMAT 查询数据库中时间类型显示
SELECT
a.name
,a.uuid
,p.assess_price as assessPrice
,p.assess_date as assessDate
,DATE_FORMAT(p.base_date,'%Y-%m-%d %H:%i:%s') as baseDate
FROM
emp p
计算两个日期的差值
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate