日期时间字面量有字符串文本和数值两种形式。
字符串文本和数值的区别如下:
字符串文本格式可使用全量分隔符,例如
'2015-07-21 12:34:56.789';或者不使用分隔符,例如'20150721'。数值格式只允许使用小数点
.作为秒和微秒部分的分隔符,例如:20150721123456.789。
在使用分隔符时,除了秒和微秒部分之间只能使用小数点 . 外,其它情况建议只使用 -、/、: 等常用分隔符。
DATE 值
OceanBase 数据库识别以下格式的 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',但 '071532' 是非法的(它包含无意义的月份和日期)会返回NULL。YYYYMMDD或YYMMDD格式,前提是该数字是有意义的日期值。例如,19830905 和 830905 被解读为"1983-09-05"。
注意
在
STRICT_TRANS_TABLES和NO_ZERO_IN_DATESQL 模式下,如果日期的月和日中含有 0 值都会报错,但是'0000-00-00'除外。
DATETIME 和 TIMESTAMP 值
OceanBase 数据库识别以下格式的 DATETIME 和 TIMESTAMP 值:
'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' 是非法的(它的分钟部分是无意义的)会返回NULL。YYYYMMDDhhmmss或YYMMDDhhmmss格式。前提是该字符串是有意义的日期值。例如,19830905132800 和 830905132800 被解读为 '1983-09-05 13:28:00'。
DATETIME 或 TIMESTAMP 值可以包括尾部小数秒部分,精度最高可达微秒(6 位)。小数部分应始终与其余时间用小数点分隔;不识别其他小数秒分隔符。
OceanBase 数据库使用以下规则解读包含两位数年份值的日期:
70-99 范围内的年份值变为 1970-1999。
00-69 范围内的年份值变为 2000-2069。
对于小于 10 的月或日值,无需指定两位数,例如 '2015-6-9' 与 '2015-06-09' 相同。同样,对于小于 10 的小时、分钟或秒值,无需指定两位数字,例如 '2015-10-30 1:2:3' 与 '2015-10-30 01:02:03' 相同。
另外,OceanBase 数据库也会根据数值的长度来选定指定的格式:
6 位数字的一般格式为
YYMMDD。8 位数字的一般格式为为
YYYYMMDD。12 位数字的一般格式为
YYMMDDHHMMSS。14 位数字的一般格式为为
YYYYMMDDHHMMSS。
TIME 值
OceanBase 数据库识别以下格式的 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格式,或者ss、mmss或hhmmss。前提该数字是有意义的时间值。例如,101112 被解读为 '10:11:12'。
在 'D hh:mm:ss.fraction'、'hh:mm:ss.fraction'、'hhmmss.fraction' 和 hhmmss.fraction 时间格式中识别尾部小数秒部分,其中小数部分精度高达微秒(6 位)。小数部分应始终与其余时间用小数点分隔;不识别其他小数秒分隔符。




