mysql中获取一天、一周、一月时间数据的各种sql语句写法 |
本文标签:mysql,sql语句 创建表: 复制代码 代码如下: create table if not exists t ( id int, addTime datetime default 0000-00-00 00:00:00′ ) 添加两条初始数据: insert t values(1, 2012-07-12 21:00:00′); 一、当天或当日插入的数据: 1、传统对比判断:SELECT * FROM `t` WHERE DATE_FORMAT(addTime,%Y-%m-%d) = date_format(now(),%Y-%m-%d)"); 二、当月的相关数据写法: 1、今天是当月的第几天:SELECT DAYOFMONTH( NOW( ) ); 1、当函数使用时,即INTERVAL(),为比较函数,如:INTERVAL(10,1,3,5,7); 结果为4; 弄清楚了上面几个重要的日期运算函数,下面再来一个混合的日期运算 。 三、当周的相关数据写法: 1、获取今天是一周第几天或星期几:SELECT WEEKDAY(now());返回的是数字:0为周一,6为周日 注:若你是以时间戳保存的时间字段,那么请用from_unixtime()函数转换为时间格式,如:from_unixtime($timestamp) 四、Mysql中将日期转为时间戳 前三点的方法,讲的都是将日期转为相应时间常量,并没有提到时间戳与时间的转换,这里把它写出来, 1、时间戳转日期,方法是select from_unixtime(1336542121); 结合前面3点,对于时间戳就更能灵活运用了!最后更新于:2013.04.08 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等函数的用法 |