• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 日期和时间

    日期和时间值可以用多种格式表示,例如带引号的字符串或数字,具体取决于值的确切类型和其他因素。例如,在上下文中,其中的MySQL预计日期时,它解释任何的'2015-07-21''20150721'以及20150721作为一个日期。

    本节介绍日期和时间文字的可接受格式。有关时间数据类型的更多信息,例如允许值的范围,请参见“日期和时间数据类型”。

    标准SQL和ODBC日期和时间文字。标准SQL允许使用type关键字和字符串指定时间文字。关键字和字符串之间的空格是可选的。

    DATE 'str'
    TIME 'str'
    TIMESTAMP 'str'
    

    MySQL可以识别这些构造以及相应的ODBC语法:

    { d 'str' }
    { t 'str' }
    { ts 'str' }
    

    MySQL使用type关键字,这些构造分别产生DATETIMEDATETIME值,如果指定,则包括尾随小数秒部分。该TIMESTAMP语法DATETIME在MySQL中产生一个值,因为DATETIME其范围与标准SQL TIMESTAMP类型的范围更接近,标准SQL 类型的范围为00019999。(MySQL的TIMESTAMP年份范围是19702038。)

    日期和时间上下文中的字符串和数字文字。 MySQL可以识别DATE以下格式的值:

    • 作为或格式的字符串。允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。例如,,,,和是相等的。'YYYY-MM-DD''YY-MM-DD''2012-12-31''2012/12/31''2012^12^31''2012@12@31'
    • 作为没有格式或分隔符的字符串,前提是该字符串作为日期有意义。例如,和被解释为,但是是非法的(它具有无意义的月份和日期部分)并变为。'YYYYMMDD''YYMMDD''20070523''070523''2007-05-23''071332''0000-00-00'
    • 作为数字YYYYMMDDYYMMDD格式的数字,条件是该数字应作为日期有意义。例如,19830905830905被解释为'1983-09-05'

    MySQL可以识别DATETIMETIMESTAMP采用以下格式的值:

    • 作为或格式的字符串。这里也允许使用“宽松”语法:任何标点符号都可以用作日期部分或时间部分之间的分隔符。例如,,,,和是相等的。'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''2012@12@31 11^30^45'

      在日期和时间部分与小数秒部分之间唯一识别的分隔符是小数点。

      日期和时间部分可以用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'
    • 作为数字YYYYMMDDhhmmssYYMMDDhhmmss格式的数字,条件是该数字应作为日期有意义。例如,19830905132800830905132800被解释为'1983-09-05 13:28:00'

    DATETIMETIMESTAMP值可以包括在高达微秒(6位)精度的后小数秒一部分。小数部分应始终与其余时间用小数点分隔;没有其他小数秒定界符被识别。有关MySQL 中小数秒支持的信息,请参见“时间值的分数秒”。

    包含两位数年份值的日期是不明确的,因为世纪是未知的。MySQL使用以下规则解释两位数的年份值:

    • 范围内的年值70-99变为1970-1999
    • 范围内的年值00-69变为2000-2069

    另请参见“日期中的2位数字”。

    对于指定为包含日期部分定界符的字符串的值,不必为小于的月份或日期指定两位数字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位数字,则假定该数字采用YYYYMMDDYYYYMMDDhhmmss格式,并且年份由前4位数字给出。如果数字是6或12位数字,则假定为YYMMDDYYMMDDhhmmss格式,并且年份由前2位数字给出。不是这些长度之一的数字将被解释为好像前导零填充到最接近的长度。

    指定为非定界字符串的值将根据其长度进行解释。对于长度为8或14个字符的字符串,假定年份由前4个字符给出。否则,假定年份由前两个字符给出。从左到右解释该字符串,以查找年,月,日,时,分和秒的值,以查找该字符串中存在的尽可能多的部分。这意味着您不应使用少于6个字符的字符串。例如,如果指定'9903',表示代表1999年3月,MySQL会将其转换为“零”日期值。发生这种情况是因为年和月值分别为9903,但是一天部分完全丢失了。但是,您可以显式指定零值来表示缺少的月份或日期部分。例如,要插入值'1999-03-00',请使用'990300'

    MySQL可以识别TIME以下格式的值:

    • 作为'D hh:mm:ss'格式的字符串。您也可以使用以下的一个“轻松”语法:'hh:mm:ss''hh:mm''D hh:mm''D hh',或'ss'。这里D代表天,值可以从0到34。
    • 作为没有'hhmmss'格式的定界符的字符串,前提是它在一定时间内有意义。例如,'101112'被理解为'10:11:12',但是'109712'是非法的(具有无意义的分钟部分)并变为'00:00:00'
    • 以数字hhmmss形式表示,但前提是它有意义。例如,101112被理解为'10:11:12'。以下备选格式也理解:ssmmss,或hhmmss

    结尾的部分的秒部分在所识别的'D hh:mm:ss.fraction''hh:mm:ss.fraction''hhmmss.fraction',和hhmmss.fraction时间的格式,其中,fraction是在高达微秒(6位)精度的小数部分。小数部分应始终与其余时间用小数点分隔;没有其他小数秒定界符被识别。有关MySQL 中小数秒支持的信息,请参见“时间值的分数秒”。

    对于TIME指定为包含时间部分定界符的字符串的值,无需为小时,分钟或秒值指定小于两位的两位10'8:3:2'与相同'08:03:02'

    上篇:数值

    下篇:十六进制值