一、MySQL 获得当前日期时间 函数
1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2008-08-08 22:20:46 |
+---------------------+
1.2 获得当前日期+时间(date + time)函数:sysdate()
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
mysql> select now(), sleep(3), now();
+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
+---------------------+----------+---------------------+
mysql> select sysdate(), sleep(3), sysdate();
+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
+---------------------+----------+---------------------+
可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。
sysdate() 日期时间函数,一般情况下很少用到。
2. 获得当前日期(date)函数:curdate()
mysql> select curdate();+------------+
| curdate() |
+------------+
| 2008-08-08 |
+------------+
3. 获得当前时间(time)函数:curtime()
mysql> select curtime();+-----------+
| curtime() |
+-----------+
| 22:41:30 |
+-----------+
/============================================================
-
DAYOFWEEK(date)
- 返回 date 的星期索引( 1 = Sunday, 2 = Monday, … 7 = Saturday)。索引值符合 ODBC 的标准。
1 | mysql> SELECT DAYOFWEEK(’1998-02-03’); |
2 | -> 3 |
1 | mysql> SELECT WEEKDAY(’1998-02-03 22:23:00’); |
2 | -> 1 |
3 | mysql> SELECT WEEKDAY(’1997-11-05’); |
4 | -> 2 |
1 | mysql> SELECT DAYOFMONTH(’1998-02-03’); |
2 | -> 3 |
1 | mysql> SELECT DAYOFYEAR(’1998-02-03’); |
2 | -> 34 |
1 | mysql> SELECT MONTH(’1998-02-03’); |
2 | -> 2 |
1 | mysql> SELECT DAYNAME("1998-02-05"); |
2 | -> ’Thursday’ |
1 | mysql> SELECT MONTHNAME("1998-02-05"); |
2 | -> ’February’ |
| 修饰符 | 含义 |
| %M | 月的名字 (January..December) |
| %W | 星期的名字 (Sunday..Saturday) |
| %D | 有英文后缀的某月的第几天 (0th, 1st, 2nd, 3rd, etc.) |
| %Y | 年份,数字的,4 位 |
| %y | 年份,数字的,2 位 |
| %X | 周值的年份,星期日是个星期的第一天,数字的,4 位,和 ’%V’ 一同使用 |
| %x | 周值的年份,星期一是个星期的第一天,数字的,4 位,和 ’%v’ 一同使用 |
| %a | 缩写的星期名 (Sun..Sat) |
| %d | 月份中的天数,数字的 (00..31) |
| %e | 月份中的天数,数字的 (0..31) |
| %m | 月,数字的 (00..12) |
| %c | 月,数字的 (0..12) |
| %b | 缩写的月份名 (Jan..Dec) |
| %j | 一年中的天数 (001..366) |
| %H | 小时 (00..23) |
| %k | 小时 (0..23) |
| %h | 小时 (01..12) |
| %I | 小时 (01..12) |
| %l | 小时 (1..12) |
| %i | 分钟,数字的 (00..59) |
| %r | 时间,12 小时 (hh:mm:ss [AP]M) |
| %T | 时间,24 小时 (hh:mm:ss) |
| %S | 秒 (00..59) |
| %s | 秒 (00..59) |
| %p | AM 或 PM |
| %w | 一周中的天数 (0=Sunday..6=Saturday) |
| %U | 星期 (00..53),星期日是个星期的第一天 |
| %u | 星期 (00..53),星期一是个星期的第一天 |
| %V | 星期 (01..53),星期日是个星期的第一天。和 ’%X’ 一起使用 |
| %v | 星期 (01..53),星期一是个星期的第一天。和 ’%x’ 一起使用 |
| %% | 一个字母 “%” |
所有其他的字符不经过解释,直接复制到结果中:
01 | mysql> SELECT DATE_FORMAT(’1997-10-04 22:23:00’, ’%W %M %Y’); |
02 | -> ’Saturday October 1997’ |
03 | mysql> SELECT DATE_FORMAT(’1997-10-04 22:23:00’, ’%H:%i:%s’); |
04 | -> ’22:23:00’ |
05 | mysql> SELECT DATE_FORMAT(’1997-10-04 22:23:00’, |
06 | ’%D %y %a %d %m %b %j’); |
07 | -> ’4th 97 Sat 04 10 Oct 277’ |
08 | mysql> SELECT DATE_FORMAT(’1997-10-04 22:23:00’, |
09 | ’%H %k %I %r %T %S %w’); |
10 | -> ’22 22 10 10:23:00 PM 22:23:00 00 6’ |
11 | mysql> SELECT DATE_FORMAT(’1999-01-01’, ’%X %V’); |
12 | -> ’1998 52’ |
===========================================================================================
MySQL Date 函数
下面的表格列出了 MySQL 中最重要的内建日期函数:
| 函数 | 描述 |
|---|---|
| NOW() | 返回当前的日期和时间 |
| CURDATE() | 返回当前的日期 |
| CURTIME() | 返回当前的时间 |
| DATE() | 提取日期或日期/时间表达式的日期部分 |
| EXTRACT() | 返回日期/时间按的单独部分 |
| DATE_ADD() | 给日期添加指定的时间间隔 |
| DATE_SUB() | 从日期减去指定的时间间隔 |
| DATEDIFF() | 返回两个日期之间的天数 |
| DATE_FORMAT() | 用不同的格式显示日期/时间 |
本文详细介绍了MySQL中获取当前日期时间的相关函数,包括now()、sysdate()、curdate()和curtime()等,并提供了实例演示。同时,还讲解了如何通过DATE_FORMAT函数灵活地格式化日期时间数据。
3107

被折叠的 条评论
为什么被折叠?



