MySQL时间日期相关函数使用

可以实现一些常见的需求
服务器君一共花费了166.534 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

数据库应用中对日期和时间的操作是非常常用的,MySQL自带了许多很有用的函数,可以帮助我们便捷地实现某些需求。下面我们来介绍一下相关的MySQL日期与实践函数。

获取当前日期:

mysql> SELECT curdate();
+------------+
| curdate()  |
+------------+
| 2010-11-16 |
+------------+
1 row in set
mysql> SELECT CURRENT_DATE();
+----------------+
| CURRENT_DATE() |
+----------------+
| 2010-11-16     |
+----------------+
1 row in set

获取当前时间:

mysql> SELECT curtime();
+-----------+
| curtime() |
+-----------+
| 12:48:40  |
+-----------+
1 row in set
mysql> SELECT CURRENT_TIME();
+----------------+
| CURRENT_TIME() |
+----------------+
| 12:49:00       |
+----------------+
1 row in set

获取当前时间日期:

mysql> SELECT now();
+---------------------+
| now()               |
+---------------------+
| 2010-11-16 12:50:39 |
+---------------------+
1 row in set
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2010-11-16 12:51:01 |
+---------------------+
1 row in set

注意:在一个单一询问中,对诸如NOW() 的函数多次访问总是会得到同样的结果。

日期增减:

DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)

这些函数执行日期运算。

  • date 是一个 DATETIME 或DATE值,用来指定起始时间。
  • expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 '-'开头。
  • type 为关键词,它指示了表达式被解释的方式。
  • 关键词INTERVA及 type 分类符均不区分大小写。

MySQL 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 DATE 值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个 DATETIME值。

指定日期1秒后:

mysql> SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND);
+----------------------------------------------------+
| DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND) |
+----------------------------------------------------+
| 2011-01-01 00:00:00                                |
+----------------------------------------------------+
1 row in set

指定日期1天后:

mysql> SELECT DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 DAY);
+-------------------------------------------------+
| DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 DAY) |
+-------------------------------------------------+
| 2011-01-01 23:59:59                             |
+-------------------------------------------------+
1 row in set

指定日期减去10小时:

mysql> SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR);
+------------------------------------------------------------+
| DATE_ADD('2011-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR) |
+------------------------------------------------------------+
| 2010-12-30 14:00:00                                        |
+------------------------------------------------------------+
1 row in set

指定日期的一个月前:

mysql> SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY);
+-----------------------------------------+
| DATE_SUB('2011-01-02', INTERVAL 31 DAY) |
+-----------------------------------------+
| 2010-12-02                              |
+-----------------------------------------+
1 row in set

指定日期的前一天:

mysql> SELECT date_add('2011-01-01', INTERVAL -1 DAY);
+-----------------------------------------+
| date_add('2011-01-01', INTERVAL -1 DAY) |
+-----------------------------------------+
| 2010-12-31                              |
+-----------------------------------------+
1 row in set

将日期时间转换成指定格式:

DATE_FORMAT(date,format)

根据format 字符串安排date 值的格式。所有其它字符都被复制到结果中,无需作出解释。注意,'%'字符要求在格式指定符之前。月份和日期说明符的范围从零开始,原因是 MySQL允许存储诸如 '2004-00-00'的不完全日期。

mysql> SELECT DATE_FORMAT( FROM_UNIXTIME( 1290996580 ), '%Y-%m-%d %H:%i:%s' );
+-----------------------------------------------------------------+
| DATE_FORMAT( FROM_UNIXTIME( 1290996580 ), '%Y-%m-%d %H:%i:%s' ) |
+-----------------------------------------------------------------+
| 2010-11-29 10:09:40                                             |
+-----------------------------------------------------------------+
1 row in set
mysql> SELECT DATE_FORMAT( FROM_UNIXTIME( 1290996580 ) , '%Y-%m-%d' );
+---------------------------------------------------------+
| DATE_FORMAT( FROM_UNIXTIME( 1290996580 ) , '%Y-%m-%d' ) |
+---------------------------------------------------------+
| 2010-11-29                                              |
+---------------------------------------------------------+
1 row in set

下面两个函数

FROM_UNIXTIME(unix_timestamp) ,
FROM_UNIXTIME(unix_timestamp,format)

返回'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS 格式值的unix_timestamp参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。

若format 已经给出,则结果的格式是根据format 字符串而定。 format 可以包含同DATE_FORMAT() 函数输入项列表中相同的说明符。

mysql> SELECT FROM_UNIXTIME(875996580);
+--------------------------+
| FROM_UNIXTIME(875996580) |
+--------------------------+
| 1997-10-05 04:23:00      |
+--------------------------+
1 row in set
mysql> SELECT FROM_UNIXTIME(875996580) + 0;
+------------------------------+
| FROM_UNIXTIME(875996580) + 0 |
+------------------------------+
|        19971005042300.000000 |
+------------------------------+
1 row in set

MySql unix时间转换成SQLServer适用的时间格式:

mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s');
+------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s') |
+------------------------------------------------------+
| 2010-11-16 19:12:11                                  |
+------------------------------------------------------+
1 row in set

本文地址:http://www.nowamagic.net/librarys/veda/detail/292,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/292

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《PHP经典实例(第2版)》 斯克拉(David Sklar) (作者), 切贝特伯格(Adam Tracbtenberg) (作者), 李松峰 (译者), 秦绪文 (译者), 李丽 (译者)

PHP经典实例(第2版)能够为您节省宝贵的Web开发时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。《PHP经典实例(第2版)》将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序。在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,《PHP经典实例(第2版)》中内容涵盖了:表单处理;Session管理;数据库交互;使用Web服务。

更多计算机宝库...