快速业务通道

在MySQL中操作日期和时间

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18
配符“%”,你可以匹配一个特定日期的所有时间。
这里有一个例子:

mysql> SELECT * FROM weblog WHERE entrydate LIKE ''2001-02-08%'' ;

这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。

+-----------+---------------------+

| data      | entrydate           |

+-----------+---------------------+

|  0.973723 | 2001-02-08 00:00:00 |

|  0.437768 | 2001-02-08 13:57:06 |

|  0.327279 | 2001-02-08 13:57:09 |

| 0.0931809 | 2001-02-08 13:58:29 |

|  0.198805 | 2001-02-08 13:57:54 |

+-----------+---------------------+

3、上面两种方法的异同

由于使用关系运算符进行的是比较过程,时转换成内部的存储格式后进行的,因此,因此时间的书写可以不是那么严格要求。

例如,下面几种写法是等价的:

mysql> SELECT * FROM weblog WHERE entrydate>="2001-02-08";
mysql> SELECT * FROM weblog WHERE entrydate>="2001-2-8";
mysql> SELECT * FROM weblog WHERE entrydate>="2001*02*08";
mysql> SELECT * FROM weblog WHERE entrydate>="20010208";
SELECT * FROM weblog WHERE entrydate>="2001/2/8";


而使用LIKE运算符和模式匹配,是通过比较串值进行的,因此必须使用标准的时间书写格式,YYYY-MM-DD HH-MM-SS。

比较日期和时间

已知两个日期,比较它们的前后,可以直接求出它们的差和零值比较,也可以利用已知的时间函数:

TO_DAYS(date)

给出一个日期date,返回一个天数(从0年的天数),date可以是一个数字,也可以是一个串值,当然更可以是包含日期的时间类型。

mysql> select TO_DAYS(960501);

+-----------------+

| TO_DAYS(960501) |

+-----------------+

|          729145 |

+-----------------+

mysql> select TO_DAYS(''1997-07-01'');

+-----------------------+

| TO_DAYS(''1997-07-01'') |

+-----------------------+

|                729571 |

+-----------------------+

例如:返回2个时间相差的天数(21世纪已经过去了多少天)

mysql> select to_days(now())-to_days(''20010101'');

+---------------------------------------------

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号