如何在H2数据库中正确查询校验TIMESTAMP类型时间戳数据
H2数据库日期校验场景SQL语法修正
原错误写法的问题在于TIMESTAMP关键字后直接使用无包裹的裸数字串作为日期值,不符合H2的语法规范,触发执行报错。以下是该场景下的合法写法:
- 标准时间戳字面量写法
H2的SQL标准中,TIMESTAMP类型的字面量需要用单引号包裹,格式遵循yyyy-MM-dd HH:mm:ss规范,仅传入日期时默认解析为当日00:00:00:WHERE lim.REVIEW_DATE >= TIMESTAMP '2022-06-06 00:00:00' - 简化日期比较写法
如果只需要按日期维度比较,不需要精确到时分秒,可以直接使用DATE关键字,写法更简洁:WHERE lim.REVIEW_DATE >= DATE '2022-06-06' - 适配yyyyMMdd格式数字串的写法
如果你的入参本身就是20220606这类无分隔符的日期串,可以用H2内置的PARSEDATETIME函数按指定格式解析,不需要手动拼接分隔符:WHERE lim.REVIEW_DATE >= PARSEDATETIME('20220606', 'yyyyMMdd')
*注意:H2中所有日期、时间、时间戳类型的字面量值必须用单引号包裹,直接传入裸数字串会被识别为算术表达式,触发语法报错。
内容的提问来源于stack exchange,提问作者Neelima kuchipudi
相关产品推荐
相关产品推荐

