暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

OceanBase SQL语句日期时间值

2024-04-25
630

日期时间字面量有字符串文本和数值两种形式。

字符串文本和数值的区别如下:

  • 字符串文本格式可使用全量分隔符,例如 '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_DATE SQL 模式下,如果日期的月和日中含有 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 格式,或者 ssmmss 或 hhmmss。前提该数字是有意义的时间值。例如,101112 被解读为 '10:11:12'。

在 'D hh:mm:ss.fraction''hh:mm:ss.fraction''hhmmss.fraction' 和 hhmmss.fraction 时间格式中识别尾部小数秒部分,其中小数部分精度高达微秒(6 位)。小数部分应始终与其余时间用小数点分隔;不识别其他小数秒分隔符。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论