引言
这是修改版
这里讨论的是,当我们存在数据库里的是dateTime形式的数据(mysql),如何判断当天当日本月和生成形如”2017-8-20”的天数据
接下来讨论的就是当我们用node作为服务端语言时,如何完成这个需求.(当然这个代码肯定前台也是可以用的)
假如有个表product有个字段add_time,它的数据类型为datetime,可能会这样写sql:
1 | select * from product where add_time = '2013-01-12' |
对于这种语句,如果你存储的格式是YY-mm-dd是这样的,那么OK,如果你存储的格式是:2013-01-12 23:23:56这种格式就不太方便了,现在就可以使用DATE()函数用来返回日期的部分,所以这条sql应该如下处理:
1 | select * from product where Date(add_time) = '2013-01-12' |
如果你要查询2013年1月份加入的产品呢?
1 | select * from product where date(add_time) between '2013-01-01' and '2013-01-31' |
或者这样
1 | select * from product where Year(add_time) = 2013 and Month(add_time) = 1 |
生成date格式时间的js代码如下
1 | function getNowTime() { |
解码数据库date格式时间的js代码如下
1 | formTime(e) { |
mysql获取当天本日本周本月数据(昨天写项目刚好用到,很方便)
原博客地址,点击这里
这里就举几个例子.(时间字段为CreatTime,不需要加引号)
今天1
2
3select * from 表名 where to_days(时间字段名) = to_days(now());
select * from P_Exception where to_days(CreatTime) = to_days(now());
昨天1
2
3SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1
SELECT * FROM P_Exception WHERE TO_DAYS( NOW( ) ) - TO_DAYS( CreatTime) <= 1
近7天1
2
3SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
SELECT * FROM P_Exception where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(CreatTime)
近30天1
2
3SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
SELECT * FROM P_Exception where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(CreatTime)
本月1
2
3SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
SELECT * FROM P_Exception WHERE DATE_FORMAT(CreatTime, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )