mysql中关于时间的问题

来源:互联网 发布:儿童遭遇网络诈骗现象 编辑:程序博客网 时间:2024/05/18 22:47

1.时间的比较

在Oracle中使用时间函数to_date习惯了,在Oracle中时间的加减也非常简单,直接加减即可。在Mysql中时间的函数很多,非常自由。 

Mysql中直接比较时间大小也是不能用>或< 
只能转换成数字来比较大小。

在Oracle中经常用到trunc(sysdate,'D'),截取到天或者到小时。 
   在Mysql中可以用date_format()来代替。返回的是时间格式的字符串,也是时间 
   在Mysql中只要符合时间格式的字符串就可以当做Date类型。 
   取今天时间到天, 
   mysql> select DATE_FORMAT(now(),'%Y%m%d'); 

如果时间的比较很精确,精确到时秒分就需要转换成UNIX_TIMESTAMP,换算成毫秒值来比较大小。

UNIX_TIMESTAMP 如:

SELECT *  FROM projectmanager WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP('2013-4-10 21:14:20'))>0;

日期运算:

 1、对时间加减的函数是 :
    加ADDDATE(),减SUBDATE(); 
    select SUBDATE(now(),interval 60 day); 60天前的时间 
     select ADDDATE(now(),interval 60 day); 60天后的时间 

2、比较时间差的话,可以进行加减处理,具体如下:

1)查询比当前时间少25分钟的数据
      SELECT NOW()- INTERVAL 25 MINUTE;
  2) 查询当前时间25分钟的数据
       SELECT NOW()+INTERVAL 5 MINUTE;

3、addtime 对于时间的加减:
当我们在给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()
4、date_add,date_sub
另外还有一种方式就是使用mysql提供的:
 
 date_add(向日期添加指定的时间间隔), DATE_ADD(date,INTERVAL expr type)
 date_sub(向日期减去指定的时间间隔), DATE_SUB(date,INTERVAL expr type) (使用方法同date_add类似)
select id,title,content,addtime from tablename_tbl where addtime >= date_sub(now, INTERVAL 3 HOUR) AND addtime < now()

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
 

 





原创粉丝点击