Mysql日期类型大小比较---拉取给定时间段的记录(二)

2014-11-24 16:34:36 · 作者: · 浏览: 1
加上1分钟、1秒钟, 减去1分钟、1秒钟;再看个例子
select now(),now()+0101;
+---------------------+-----------------------+
| now() | now()+0101 |
+---------------------+-----------------------+
| 2013-03-15 13:19:34 | 20130315132035.000000 |
+---------------------+-----------------------+
select now(),now()-0101;
+---------------------+-----------------------+
| now() | now()-0101 |
+---------------------+-----------------------+
| 2013-03-15 13:19:38 | 20130315131837.000000 |
+---------------------+-----------------------+
是不是跟奇怪了,这两条语句同样也是给当前时间加/减1分钟1秒钟。再看一个结合了年月日的例子:
select now(), now()+00010203040506;
+---------------------+-----------------------+
| now() | now()+00010203040506 |
+---------------------+-----------------------+
| 2013-03-15 13:21:50 | 20140518172656.000000 |
+---------------------+-----------------------+
select now(), now()-00010203040506;
+---------------------+-----------------------+
| now() | now()-00010203040506 |
+---------------------+-----------------------+
| 2013-03-15 13:21:54 | 20120112091648.000000 |
+---------------------+-----------------------+
看到这里,我们大概就能够明白了+-的含义了吧;上边两条语句是:给当前日期加减:1年2个月3天 4小时5分钟6秒钟。
所以,当我们在给now()+-一个时间的时候,其实应该这样理解的:
+1/+01:加1秒钟
+101/+0101:加1分钟1秒钟
+10101/+010101:加1小时1分钟1秒钟
+1010101/+01010101:加1天1分钟1秒钟
+101010101/+0101010101:加1月1天1分钟1秒钟
+1101010101/+010101010101:加1年1月1天1分钟1秒钟,这里要注意下,年这个部分可以是4位(高位没有的话会补零):00010101010101
(减也是类似的)
所以对于前边的问题:拉去过去三小时内新增的记录, 就可以这样写sql了:
select id,title,content,addtime from tablename_tbl where addtime >= now() - 30000 and addtime <= now()
另外还有一种方式就是使用mysql提供的:
date_add(向日期添加指定的时间间隔), DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
date_sub(向日期减去指定的时间间隔), DATE_SUB(date,INTERVAL expr type) (使用方法同date_add类似)
sql可以这样写:
select id,title,content,addtime from tablename_tbl where addtime >= date_sub(now, INTERVAL 3 HOUR) AND addtime < now()
(完)