- GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
返回一个格式字符串。此函数与DATE_FORMAT()和STR_TO_DATE()函数结合使用非常有用。
如果format
为NULL,此函数将返回NULL。
第一个和第二个参数的可能值会产生几个可能的格式字符串(有关使用的说明符,请参阅DATE_format()函数描述中的表)。ISO格式指的是ISO 9075,而不是ISO 8601。
Function Call | Result |
GET_FORMAT(DATE,'USA') | '%m.%d.%Y' |
GET_FORMAT(DATE,'JIS') | '%Y-%m-%d' |
GET_FORMAT(DATE,'ISO') | '%Y-%m-%d' |
GET_FORMAT(DATE,'EUR') | '%d.%m.%Y' |
GET_FORMAT(DATE,'INTERNAL') | '%Y%m%d' |
GET_FORMAT(DATETIME,'USA') | '%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'JIS') | '%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'ISO') | '%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'EUR') | '%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'INTERNAL') | '%Y%m%d%H%i%s' |
GET_FORMAT(TIME,'USA') | '%h:%i:%s %p' |
GET_FORMAT(TIME,'JIS') | '%H:%i:%s' |
GET_FORMAT(TIME,'ISO') | '%H:%i:%s' |
GET_FORMAT(TIME,'EUR') | '%H.%i.%s' |
GET_FORMAT(TIME,'INTERNAL') | '%H%i%s' |
TIMESTAMP也可以用作GET_FORMAT()的第一个参数,在这种情况下,函数返回与DATETIME相同的值。
mysql> SELECT DATE_FORMAT('2003-10-03',GET_FORMAT(DATE,'EUR'));-> '03.10.2003'
mysql> SELECT STR_TO_DATE('10.31.2003',GET_FORMAT(DATE,'USA'));-> '2003-10-31'
- LAST_DAY(date)
获取日期或日期时间值,并返回该月最后一天的相应值。如果参数无效或为NULL,则返回NULL。
mysql> SELECT LAST_DAY('2003-02-05');-> '2003-02-28'
mysql> SELECT LAST_DAY('2004-02-05');-> '2004-02-29'
mysql> SELECT LAST_DAY('2004-01-01 01:01:01');-> '2004-01-31'
mysql> SELECT LAST_DAY('2003-03-32');-> NULL
- MICROSECOND(expr)
以0到999999之间的数字形式返回时间或日期时间表达式expr的微秒。如果expr为NULL,则返回NULL。
mysql> SELECT MICROSECOND('12:00:00.123456');-> 123456
mysql> SELECT MICROSECOND('2019-12-31 23:59:59.000010');-> 10
- MINUTE(time)
返回时间的分钟,范围为0到59,如果时间为NULL,则返回NULL。
mysql> SELECT MINUTE('2008-02-03 10:05:03');-> 5
- MONTH(date)
返回日期的月份,对于1月到12月,返回范围为1到12;对于具有零月份部分的日期,返回0,例如“0000-00-00”或“2008-00-00”。如果日期为NULL,则返回NULL。
mysql> SELECT MONTH('2008-02-03');-> 2
- MONTHNAME(date)
返回日期所在月份的全名。用于名称的语言由lc_time_names系统变量的值控制。如果日期为NULL,则返回NULL。
mysql> SELECT MONTHNAME('2008-02-03');-> 'February'
- NOW([fsp])
以“YYYY-MM-DD hh:MM:ss”或YYYY-MMDDhhmmss格式的值返回当前日期和时间,具体取决于函数是在字符串上下文中使用还是在数字上下文中使用。该值以会话时区表示。
如果给定fsp参数以指定从0到6的小数秒精度,则返回值包括该数字的小数秒部分。
mysql> SELECT NOW();-> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;-> 20071215235026.000000
NOW()返回一个常量时间,指示语句开始执行的时间。(在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)这与SYSDATE()的行为不同,后者返回执行的确切时间。
mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW() | SLEEP(2) | NOW() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |
+---------------------+----------+---------------------+mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE() | SLEEP(2) | SYSDATE() |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |
+---------------------+----------+---------------------+
此外,SET TIMESTAMP语句会影响NOW()返回的值,但不会影响SYSDATE()返回。这意味着二进制日志中的时间戳设置对SYSDATE()的调用没有影响。将时间戳设置为非零值会导致NOW()的每次后续调用都返回该值。将时间戳设置为零将取消此效果,以便NOW()再次返回当前日期和时间。
请参阅SYSDATE()的描述,以获取有关这两个函数之间差异的更多信息。
- PERIOD_ADD(P,N)
将N个月添加到周期P(格式为YYYMM或YYYYMM)。返回格式为YYYYMM的值。
如果P或N为NULL,此函数将返回NULL。
mysql> SELECT PERIOD_ADD(200801,2);-> 200803
- PERIOD_DIFF(P1,P2)
返回周期P1和周期P2之间的月数。P1和P2的格式应为YYYMM或YYYYMM。请注意,周期参数P1和P2不是日期值。
如果P1或P2为NULL,此函数将返回NULL。
mysql> SELECT PERIOD_DIFF(200802,200703);-> 11