Mysql的时间运算和比较大小的方法
来源:互联网 发布:万网域名自助管理平台 编辑:程序博客网 时间:2024/05/16 10:51
Mysql中时间加减和比较大小的方法
在Oracle中使用时间函数to_date习惯了,在Oracle中时间的加减也非常简单,直接加减即可。在Mysql中时间的函数很多,非常自由。
在项目中经常用到的就是时间的加减。
比如60天前,Oracle中直接就是sysdate-60,Mysql中就不行。
对时间加减的函数是
加ADDDATE(),减SUBDATE();
select SUBDATE(now(),interval 60 day); 60天前的时间
select ADDDATE(now(),interval 60 day); 60天后的时间
在Oracle中经常用到trunc(sysdate,'D'),截取到天或者到小时。
在Mysql中可以用date_format()来代替。返回的是时间格式的字符串,也是时间
在Mysql中只要符合时间格式的字符串就可以当做Date类型。
取今天时间到天,
mysql> select DATE_FORMAT(now(),'%Y%m%d');
+-----------------------------+
| DATE_FORMAT(now(),'%Y%m%d') |
+-----------------------------+
| 20100611 |
+-----------------------------+
1 row in set (0.00 sec)
取到小时。
mysql> select DATE_FORMAT(now(),'%Y%m%d%H');
+-------------------------------+
| DATE_FORMAT(now(),'%Y%m%d%H') |
+-------------------------------+
| 2010061121 |
+-------------------------------+
1 row in set (0.00 sec)
Mysql中直接比较时间大小也是不能用>或<
只能转换成数字来比较大小。
如果比较天的大小,1号小于2号。需要转换成到现在为止的天数。用到的是to_days(),
mysql> select to_days('20100602');
+---------------------+
| to_days('20100602') |
+---------------------+
| 734290 |
+---------------------+
1 row in set (0.00 sec)
mysql> select to_days('20100603');
+---------------------+
| to_days('20100603') |
+---------------------+
| 734291 |
+---------------------+
1 row in set (0.00 sec)
如果时间的比较很精确,精确到时秒分就需要转换成UNIX_TIMESTAMP,换算成毫秒值来比较大小。
mysql> select UNIX_TIMESTAMP('201006021700');
+--------------------------------+
| UNIX_TIMESTAMP('201006021700') |
+--------------------------------+
| 1601921820 |
+--------------------------------+
1 row in set (0.00 sec)
mysql> select UNIX_TIMESTAMP('201006021800');
+--------------------------------+
| UNIX_TIMESTAMP('201006021800') |
+--------------------------------+
| 1601921880 |
+--------------------------------+
1 row in set (0.00 sec)
在项目中经常用到的就是时间的加减。
比如60天前,Oracle中直接就是sysdate-60,Mysql中就不行。
对时间加减的函数是
加ADDDATE(),减SUBDATE();
select SUBDATE(now(),interval 60 day); 60天前的时间
select ADDDATE(now(),interval 60 day); 60天后的时间
在Oracle中经常用到trunc(sysdate,'D'),截取到天或者到小时。
在Mysql中可以用date_format()来代替。返回的是时间格式的字符串,也是时间
在Mysql中只要符合时间格式的字符串就可以当做Date类型。
取今天时间到天,
mysql> select DATE_FORMAT(now(),'%Y%m%d');
+-----------------------------+
| DATE_FORMAT(now(),'%Y%m%d') |
+-----------------------------+
| 20100611 |
+-----------------------------+
1 row in set (0.00 sec)
取到小时。
mysql> select DATE_FORMAT(now(),'%Y%m%d%H');
+-------------------------------+
| DATE_FORMAT(now(),'%Y%m%d%H') |
+-------------------------------+
| 2010061121 |
+-------------------------------+
1 row in set (0.00 sec)
Mysql中直接比较时间大小也是不能用>或<
只能转换成数字来比较大小。
如果比较天的大小,1号小于2号。需要转换成到现在为止的天数。用到的是to_days(),
mysql> select to_days('20100602');
+---------------------+
| to_days('20100602') |
+---------------------+
| 734290 |
+---------------------+
1 row in set (0.00 sec)
mysql> select to_days('20100603');
+---------------------+
| to_days('20100603') |
+---------------------+
| 734291 |
+---------------------+
1 row in set (0.00 sec)
如果时间的比较很精确,精确到时秒分就需要转换成UNIX_TIMESTAMP,换算成毫秒值来比较大小。
mysql> select UNIX_TIMESTAMP('201006021700');
+--------------------------------+
| UNIX_TIMESTAMP('201006021700') |
+--------------------------------+
| 1601921820 |
+--------------------------------+
1 row in set (0.00 sec)
mysql> select UNIX_TIMESTAMP('201006021800');
+--------------------------------+
| UNIX_TIMESTAMP('201006021800') |
+--------------------------------+
| 1601921880 |
+--------------------------------+
1 row in set (0.00 sec)
- Mysql的时间运算和比较大小的方法
- Mysql中时间加减和比较大小的方法
- Mysql中时间加减和比较大小的方法
- mysql和sql时间 字段比较大小的问题
- C#中时间大小的比较方法
- 时间大小的比较
- 比较时间的大小
- 比较时间的大小
- 时间大小的比较
- 时间大小的比较
- 比较两个时间的大小和时间差
- 比较两个时间的大小和时间差
- 时间的转换和比较大小
- mysql中日期比较大小的方法
- mysql中日期比较大小的方法
- mysql中日期比较大小的方法
- mysql的比较运算
- 比较两个时间的大小
- #pragma vector
- c#获得当前执行文件的路径
- python输出json时中文处理问题
- 优化 eclipse+myeclipse
- java第十周封装一类对象,功能是随机产生一个2000年后的年份,并输出该年2月的日历页,需处理闰年的问题。
- Mysql的时间运算和比较大小的方法
- 光场基本理论分享
- __cdecl _stdcall 区别
- 软件设计
- ActionContext和ServletActionContext小结
- 学生信息管理系统
- linux根文件系统制作
- tomcat 5.0 linux 配置
- 打豆豆