日期和时间值可以用几种格式表示,例如带引号的字符串或数字,这取决于值的确切类型和其他因素。例如,在MySQL需要一个日期的上下文中,它会解释任何日期'2015-07-21'
,“20150721”
, 和20150721
作为约会。
本节介绍日期和时间文字的可接受格式。有关时间数据类型的更多信息,例如允许值的范围,请参阅第11.2节,“日期和时间数据类型”.
标准SQL和ODBC日期和时间字面量。标准SQL要求使用type关键字和字符串指定时态文字。关键字与字符串之间的空格是可选的。
日期 'str“时间”str'时间戳'str'
MySQL识别但与标准SQL不同,不需要类型关键字。要标准符合标准符合标准的应用程序应包括时间文字的类型关键字。
MySQL还可以识别与标准SQL语法相对应的ODBC语法:
{d 'str'} {t'str'} {ts'str'}
MySQL使用type关键字和ODBC结构来生成日期
,时间
, 和DATETIME
值,如果指定,则包括末尾的小数秒部分。的时间戳
语法产生A.DATETIME
mysql的价值,因为DATETIME
具有更紧密对应于标准SQL的范围时间戳
类型,有一年的范围0001
来9999
.(MySQL时间戳
年的范围是1970年
来2038.
.)
日期和时间上下文中的字符串和数字文字。MySQL承认日期
这些格式的值:
作为一个字符串
'
或者yyyy-mm-dd
''
格式。一个”轻松”语法是允许的:任何标点字符都可以用作日期部分之间的分隔符。例如,YY-MM-DD
'“2012-12-31”
,'2012/12/31'
,2012 ^ ^ 12 31
, 和'2012 @ 12 @ 31'
是等价的。作为一个没有分隔符的字符串
'
或者名称
''
格式化,只要该字符串就会作为日期。例如,yymmdd.
''20070523'
和'070523'
被解读为'2007-05-23'
,但'071332'
是非法的(它有荒谬的月和日部分),并成为“0000-00-00”
.作为一个数字
名称
或者yymmdd.
格式化,只要该数字就会作为日期。例如,19830905
和830905
被解读为“1983-09-05”
.
作为一个字符串
'
或者YYYY-MM-DD hh: mm: ss
''
格式。一个”轻松”这里也允许语法:任何标点字符都可以用作日期部分或时间部分之间的分隔符。例如,YY-MM-DD hh: mm: ss
'“2012-12-31 11:30:45”
,2012年^ ^ 12日31日11 + 30 + 45 '
,'2012/12/31 11 * 30 * 45'
, 和“45 30 2012 @12@31 11 ^ ^”
是等价的。日期和时间部分与小数秒部分之间唯一可识别的分隔符是小数点。
日期和时间部分可以用
T
而不是一个空间。例如,“2012-12-31 11:30:45”
'2012-12-31T11:30:45'
是等价的。作为一个没有分隔符的字符串
'
或者yyyymmddhhmmss.
''
格式化,只要该字符串就会作为日期。例如,YYMMDDHHMMSS
''20070523091528'
和'070523091528'
被解读为“2007-05-23 09:15:28”
,但“071122129015”
是非法的(它有一个典型的分钟部分)并成为'0000-00-00 00:00:00'
.作为一个数字
yyyymmddhhmmss.
或者YYMMDDHHMMSS
格式化,只要该数字就会作为日期。例如,19830905132800
和830905132800
被解读为“1983-09-05 13:28:00”
.
一个DATETIME
或者时间戳
值可以包括尾随分秒部分,高达微秒(6位)精度。分数部分应始终与小数点与其他时间分开;没有识别其他小数分隔符。有关MySQL中的小数秒数支持的信息,请参阅第11.2.6节“时间值分数”.
包含两位数年份的日期是不明确的,因为世纪是未知的。MySQL使用以下规则解释两位数的年份值:
年份的年份值
70-99
变得1970 - 1999
.年份的年份值
00-69
变得2000 - 2069
.
另请参阅第11.2.8节,“两位数年份”.
对于指定为包含日期部分分隔符的字符串指定的值,不必指定少于的月份或日值的两位数10
.“2015-6-9”
是相同的'2015-06-09'
.类似地,对于指定为包含时间部分分隔符的字符串的值,不需要为小于的小时、分钟或秒值指定两个数字10
.“2015-10-30 1:2:3”
是相同的'2015-10-30 01:02:03'
.
作为数字指定的值应该是6、8、12或14位数字长。如果一个数字长度为8位或14位,则认为它在名称
或者yyyymmddhhmmss.
格式,年份由前4位数字给出。如果数字是6位或12位,则假定它在yymmdd.
或者YYMMDDHHMMSS
格式,年份由前2位数字给出。不属于这些长度的数字被解释为以最接近的长度填充前导零。
指定为非分隔字符串的值将根据其长度进行解释。对于长度为8或14个字符的字符串,年份被假定为由前4个字符给出。否则,假定年份是由前两个字符给出的。从左到右对字符串进行解释,查找年、月、日、小时、分钟和秒的值,查找字符串中出现的所有部分。这意味着您不应该使用少于6个字符的字符串。例如,如果您指定“9903”
,认为这代表1999年3月,MySQL将其转换为”零”日期值。这是因为年和月值是99.
和03
,但白天的部分完全缺失了。但是,您可以显式地指定值0来表示缺少的月或日部分。例如,插入值'1999-03-00'
, 用“990300”
.
MySQL承认时间
这些格式的值:
作为一个字符串
“D hh: mm: ss”
格式。您还可以使用以下方法之一”轻松”语法:“hh: mm: ss”
,'hh:mm'
,'d hh:mm'
,'d hh'
,或“党卫军”
.在这里D
代表几天,可以从0到34的值。作为一个没有分隔符的字符串
'hhmmss'
格式化,只要它有一个有意义的时间。例如,'101112'
是理解为“10:11:12”
,但'109712'
是非法的(它有一个典型的分钟部分)并成为'00:00:00'
.作为一个数字
hhmmss
格式化,只要它有一个有意义的时间。例如,101112
是理解为“10:11:12”
.也可以理解以下替代格式:党卫军
,mms
,或hhmmss
.
中可识别尾随的小数秒部分“D hh: mm: ss.fraction”
,'hh:mm:ss.fraction'
,'hhmmss.fraction'
, 和hhmmss.fraction
时间格式,分数
是高达微秒(6位)精度的分数部分。分数部分应始终与小数点与其他时间分开;没有识别其他小数分隔符。有关MySQL中的小数秒数支持的信息,请参阅第11.2.6节“时间值分数”.
为时间
作为包含时间零件分隔符的字符串指定的值,不需要指定少于的数小时,分钟或秒值的两位数10
.“8:3:2”
是相同的'08:03:02'
.