SQL语句查询最近几年和几月的数据
select DateAdd(Month,-3,getdate()) –返回一个时间,根据这个时间点去查询想要的数据即可
–DateAdd函数的详细说明:
–DateAdd(interval, number, date)
–interval 必选。字符串表达式,表示要添加的时间间隔。
–yyyy 年
–q 季度
–m 月
–y 一年的日数
–d 日
–w 一周的日数
–ww 周
–h 小时
–n 分钟
–s 秒
–number 必选,数值表达式。
–表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
–date 必选。标识查询时的对比时间,getdate()在SQL中说明是现在的时间 。
–例子:
Select DateAdd(Month,-3,getdate()) –以当前时间为准,返回三个月之前的一个时间点
Select DateAdd(yyyy,-3,getdate()) –以当前时间为准,返回三年之前的一个时间点
Select DateAdd(Month,3,getdate()) –以当前时间为准,返回三个月之后的一个时间点
MySql:
mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB,
参考如下
复制代码 代码如下:
SELECT * FROM yh_content
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
注意:如果数据库中时间以UNIX时间戳的形式存放的话,在时间对比上需要更改为统一格式:
DATE_SUB()返回的是格式化后的时间:2014-05-17
需要用UNIX_TIMESTAMP()转化为UNIX时间戳形式对比:
复制代码 代码如下:
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
where inputtime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
详细请查看MySql时间函数:DATE_SUB、DATE_ADD、UNIX_TIMESTAMP等函数的用法