如何在H2数据库中实现Oracle to_timestamp函数的等效转换?
Oracle to_timestamp 转换为 H2 等效实现
要将Oracle中的to_timestamp转换为H2的等效写法,需要匹配两者的格式符差异,以下是具体实现:
格式串对应关系
Oracle原格式DD-MON-RR HH.MI.SSXFF AM与H2格式的对应规则:
DD→dd:两位日期数字MON→MMM:三位英文月份缩写(如APR)RR→yy:两位年份(自动补全世纪,逻辑与Oracle RR一致)HH→hh:12小时制小时数MI→mm:两位分钟数SS→ss:两位秒数XFF→SSSSSSSSS:9位纳秒级小数秒AM→a:上午/下午标识(AM/PM)
H2 等效代码示例
方法1:使用H2原生TO_TIMESTAMP函数(H2 1.4.200及以上版本支持,推荐)
TO_TIMESTAMP('26-APR-23 10.38.27.666000000 PM', 'dd-MMM-yy hh.mm.ss.SSSSSSSSS a')
方法2:使用PARSEDATETIME函数
PARSEDATETIME('26-APR-23 10.38.27.666000000 PM', 'dd-MMM-yy hh.mm.ss.SSSSSSSSS a')
注意事项
- 需确保H2数据库语言环境为英文,否则三位月份缩写(如APR)无法解析。可在连接URL中指定:
jdbc:h2:~/test;LOCALE=en_US - 若仅需毫秒级精度,可将格式串中的
SSSSSSSSS简化为SSS,对应Oracle的FF3
内容的提问来源于stack exchange,提问作者Ganesh Karuppaiah
相关产品推荐
相关产品推荐

