返回一个格式字符串。此函数与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'
获取日期或日期时间值,并返回该月最后一天的相应值。如果参数无效或为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
以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
返回时间的分钟,范围为0到59,如果时间为NULL,则返回NULL。
mysql> SELECT MINUTE('2008-02-03 10:05:03');
-> 5
返回日期的月份,对于1月到12月,返回范围为1到12;对于具有零月份部分的日期,返回0,例如“0000-00-00”或“2008-00-00”。如果日期为NULL,则返回NULL。
mysql> SELECT MONTH('2008-02-03');
-> 2
返回日期所在月份的全名。用于名称的语言由lc_time_names系统变量的值控制。如果日期为NULL,则返回NULL。
mysql> SELECT MONTHNAME('2008-02-03');
-> 'February'
以“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()的描述,以获取有关这两个函数之间差异的更多信息。
将N个月添加到周期P(格式为YYYMM或YYYYMM)。返回格式为YYYYMM的值。
如果P或N为NULL,此函数将返回NULL。
mysql> SELECT PERIOD_ADD(200801,2);
-> 200803
返回周期P1和周期P2之间的月数。P1和P2的格式应为YYYMM或YYYYMM。请注意,周期参数P1和P2不是日期值。
如果P1或P2为NULL,此函数将返回NULL。
mysql> SELECT PERIOD_DIFF(200802,200703);
-> 11