MySQL 时间函数

在说MySQL的时间函数之前,先把MySQL的时间类型字段大概熟悉一下,这样对于MySQL时间函数的理解就更好啦。

MySQL有以下的时间类型:

datetime '0000-00-00 00:00:00'
date      '0000-00-00'
timestamp '0000-00-00 00:00:00'
time      '00:00:00'
year      0000

datetime 显示为'YYYY-MM-DD HH:MM:SS'格式,范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
date      显示为'YYYY-MM-DD'格式,范围为'1001-01-01'到'9999-12-31'
timestamp 范围从'1970-01-01 00:00:01'UTC 到'2038-01-09 03:14:07'UTC
指定datetime值时,可以用'2009-01-01 11:20:30','2009/01/01 11*20*30','2009*01*01 11^20^30','2009@01@01 11+20+30'等,效果是一样的。此外,如果使用字符串如'20090101112030'或'090101112030'或者使用数字也是可以的,如20090101112030或090101112030。

指定datetime、date或timestamp值时,月、日、时、分、秒,若小于10,可以只写1位,如'2009-01-01 11:30:30'与'2009-1-1 11:30:30'一样。
----------------------------------------------------以上为分享整理的内容-------------------------------------------------------------------------------------------------

MySQL Curdate()函数

CURDATE() 函数返回当前的日期。

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2011-07-08 |
+------------+
1 row in set (0.02 sec)

MySQL Now()函数

NOW() 函数返回当前的日期和时间。

mysql> select now();
+---------------------+
| now()                   |
+---------------------+
| 2011-07-08 09:43:01 |
+---------------------+
1 row in set (0.01 sec)

MySQL curtime()函数

CURTIME() 函数返回当前的时间。

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 09:44:11  |
+-----------+
1 row in set (0.01 sec)

curdate()&Now()&curtime()比较

mysql> select curdate(),now(),curtime();
+------------+---------------------+-----------+
| curdate()   | now()                   | curtime() |
+------------+---------------------+-----------+
| 2011-07-08 | 2011-07-08 09:40:27 | 09:40:27  |
+------------+---------------------+-----------+
1 row in set (0.01 sec)

MySQL date()函数

DATE() 函数返回日期或日期/时间表达式的日期部分。

如果我们的表如下:

mysql> select * from product;
+---------+-------------+---------------------+
| orderid | productname | ordertime           |
+---------+-------------+---------------------+
| 1       | mouse       | 2011-07-08 09:48:43 |
+---------+-------------+---------------------+
1 row in set (0.00 sec)

那么我们使用date函数的查询结果为:

mysql> select orderid,productname,date(ordertime) from product;
+---------+-------------+-----------------+
| orderid | productname | date(ordertime) |
+---------+-------------+-----------------+
| 1         | mouse      | 2011-07-08      |
+---------+-------------+-----------------+
1 row in set (0.00 sec)

MySQL Extract()函数

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

EXTRACT(unit FROM date)

unit值
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

如果我们的表如下:

mysql> select * from product;
+---------+-------------+---------------------+
| orderid | productname | ordertime           |
+---------+-------------+---------------------+
| 1       | mouse       | 2011-07-08 09:48:43 |
+---------+-------------+---------------------+
1 row in set (0.00 sec)

那么我们使用extract函数的查询结果为:

mysql> select extract(year from ordertime) as year,
    -> extract(month from ordertime) as month,
    -> extract(day from ordertime) as day
    -> from product;
+------+-------+------+
| year | month | day  |
+------+-------+------+
| 2011 |     7 |    8 |
+------+-------+------+
1 row in set (0.00 sec)
MySQL Date_Add()函数

DATE_ADD() 函数向日期添加指定的时间间隔。

DATE_ADD(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是希望添加的时间间隔。type跟上述的unit一样。

如果我们的表如下:

mysql> select * from product;
+---------+-------------+---------------------+
| orderid | productname | ordertime           |
+---------+-------------+---------------------+
| 1       | mouse       | 2011-07-10 09:48:43 |
+---------+-------------+---------------------+
1 row in set (0.00 sec)

那么我们使用date_add函数的查询结果为:

mysql> select orderid,date_add(ordertime,interval 2 minute) as newordertime
    -> from product;
+---------+---------------------+
| orderid   | newordertime          |
+---------+---------------------+
| 1           | 2011-07-08 09:50:43 |
+---------+---------------------+
1 row in set (0.00 sec)

MySQL Date_SUB()

DATE_SUB() 函数从日期减去指定的时间间隔。

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是希望减去的时间间隔。type跟上述的unit一样。

如果我们的表如下:

mysql> select * from product;
+---------+-------------+---------------------+
| orderid | productname | ordertime           |
+---------+-------------+---------------------+
| 1       | mouse       | 2011-07-08 09:50:43 |
+---------+-------------+---------------------+
1 row in set (0.00 sec)

那么我们使用date_sub函数的查询结果为:

mysql> select orderid,date_sub(ordertime,interval 2 day) as newordertime
    -> from product;
+---------+---------------------+
| orderid   | newordertime          |
+---------+---------------------+
| 1           | 2011-07-06 09:48:43 |
+---------+---------------------+
1 row in set (0.02 sec)

MySQL DateDiff()函数

DATEDIFF() 函数返回两个日期之间的天数。DATEDIFF(date1,date2),date1date2 参数是合法的日期或日期/时间表达式。

mysql> select datediff('2011-2-3','2011-9-6') as datediff;
+----------+
| datediff |
+----------+
|     -215 |
+----------+
1 row in set (0.00 sec)

mysql> select datediff('2011-9-3','2011-5-6') as datediff;
+----------+
| datediff |
+----------+
|      120 |
+----------+
1 row in set (0.01 sec)
MySQL Date_format()函数
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format),date 参数是合法的日期。format 规定日期/时间的输出格式。

可以使用的格式有:

%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

mysql> select date_format(now(),'%b %d %Y %h:%i %p') as newformat;
+----------------------+
| newformat                |
+----------------------+
| Jul 08 2011 10:29 AM |
+----------------------+
1 row in set (0.00 sec)

mysql> select date_format(now(),'%c %D %Y %u %W') as new;
+----------------------+
| new                     |
+----------------------+
| 7 8th 2011 27 Friday |
+----------------------+
1 row in set (0.02 sec)

时间: 2024-10-30 06:09:28

MySQL 时间函数的相关文章

程序-mysql时间函数 求各位大神们帮忙啊

问题描述 mysql时间函数 求各位大神们帮忙啊 根据一个开始日期和一个结束日期判断他是否是今天,明天,本周,本周末,下周,下周末和本月用Java程序判断也行 解决方案 http://www.cxybl.com/html/wlbc/db/MYSQL/20120615/30335.html 解决方案二: import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.LocalDate; //使用这个jo

MySQL常用时间函数详解(推荐)_Mysql

2.6 DATE_SUB/DATE_ADD DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.expr 参数是您希望添加的时间间隔. SELECT id FROM my_table WHERE create_time >= date_sub(now(), INTERVAL 3 HOUR) AND create_time < now(); Type 值 •MICROSECOND •SECOND •MINUTE •HOUR •DAY •WEEK

php Mysql日期和时间函数集合_php技巧

收集的比较全的Mysql日期和mysql时间函数DATE_FORMAT(date,format)  根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(January--December)  %W 星期名字(Sunday--Saturday)  %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等.)  %Y 年, 数字, 4 位  %y 年, 数字, 2 位  %a 缩写的星期名字(Sun--Sat)  %d 月份中的天数, 数字(00

mysql 时区与时间函数

--在mysql中可以直接使用sleep()函数,sysdate函数返回的是执行到当前函数的时间,而now函数返回的是执行sql的时间 mysql> SELECT now(),SYSDATE(), SLEEP(2),now(), sysdate() from dual; +---------------------+---------------------+----------+---------------------+---------------------+ | now()      

mysql时间转换函数的用法

mysql时间转换函数的用法 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK(2007-10-31); -> 4 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, --6= 星期天). mysql> select WEEKDAY('2007-10-31 13:05:00'); -> 2 mysql> select WEEKDAY('2007-10

MySQL内置函数中的日期和时间函数详解

下面的例子使用了时间函数.以下询问选择了最近的 30天内所有带有date_col 值的记录: mysql> SELECT something FROM tbl_name -> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col; 注意,这个询问也能选择将来的日期记录. 用于日期值的函数通常会接受时间日期值而忽略时间部分.而用于时间值的函数通常接受时间日期值而忽略日期部分. 返回各自当前日期或时间的函数在每次询问执行开始时计算一次.这

Mysql日期和时间函数总结

一.MySQL 获得当前日期时间函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() current_time

Mysql学习笔记(五)数学与日期时间函数

原文:Mysql学习笔记(五)数学与日期时间函数 学习内容: 1.数学函数 2.日期时间函数 这些函数都是很常用的函数...在这里进行简单的介绍... 数学函数: mysql> SELECT ABS(-32); //取绝对值函数 -> 32 这个函数可安全地使用于 BIGINT 值. mysql> SELECT SIGN(-32);//判断一个数是正数,负数,还是0..根据实际情况返回指定的数值.. -> -1 mysql> SELECT MOD(234, 10);//取模函

mysql时间操作函数用法总结

一.时间差 datediff:说白了就是用第一个时间去减第二个时间,顺序不能忘记  代码如下 复制代码 select datediff('2012-08-08', '2012-08-13'); -- -5 二.获取当前时间  代码如下 复制代码 now current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp    -- (v4.0.6) ,localtimestamp()  -- (v4.0.6