`
sunrise_king
  • 浏览: 171550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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)
分享到:
评论
1 楼 xt_yangjie 2012-01-30  



不错。。

相关推荐

    mysql时间比较

    mysql时间比较,两个事件类型的字段比较大小,以及时间加减计算,例子

    mysql资料_导入导出_备份还原_编码_字段类型长度_字符串_长度-定位-截取-拼接_日期_求差-加减-UTC-时区转换_查看表空间大小

    资源包含文件: 1、MySQL命令行导出数据库.txt 2、MySQL字段数据类型和长度.sql 3、usefullSQL.sql 4、编码.txt usefullSQL包含有: ...日期操作:求差,加减,UTC时间,时区(timezone)转换等 查看表空间大小

    2009达内SQL学习笔记

    2、对数据类型的列可进行运算(如加减乘除)。 3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号) 多...

    [ASP]xiaoshuoguanli整站系统

    MySQL5.0(安装MySQL版必须,大小1G左右) 空间大小:1G(纯文字) 服务器建议配置: 操作系统: 中文Windows2000/2003 CPU:P4 2.6G以上 内存:512MB以上 MSSQL2000/以上版本(安装SQL版必须,大小1G以上)...

    经典SQL脚本大全

    │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ 2.5.3 工作日处理函数(标准节假日).sql │ │ 2.5.3 工作日处理函数(自定义节假日).sql...

    Sqlserver2000经典脚本

    │ 2.4.1 日期格式化处理.sql │ │ 2.4.2 日期推算处理.sql │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ ...

    网吧维护技术资料 合集

    1060 网吧维护\资料\FW\ASP中五种连接数据库的方法.TXT 5239 网吧维护\资料\FW\ASP实现对SQL SERVER 数据库的操作.TXT 2945 网吧维护\资料\FW\MYSQL.TXT 11239 网吧维护\资料\FW\WIN2000SERVER安全设置的一些小技巧....

Global site tag (gtag.js) - Google Analytics