如何在H2数据库中获取当前时间戳减2个月后当月第一天的无时间部分值
在H2数据库中获取指定时间戳减2个月后的当月第一天(含00:00:00)
Got it!在H2数据库里实现这个需求其实很简单,我们只需要组合两个内置的日期函数就能精准得到你要的结果:
核心思路
- 第一步:用
DATEADD函数将目标时间戳减去2个月,参数指定为'MONTH'和偏移量-2; - 第二步:用
TRUNCATE函数将偏移后的日期截断到当月第一天,指定截断级别为'MONTH',这会自动把时间部分重置为00:00:00。
具体SQL语句
如果是基于当前系统时间戳计算:
TRUNCATE(DATEADD('MONTH', -2, CURRENT_TIMESTAMP()), 'MONTH')
如果是针对数据表中的某个时间字段(比如名为event_time的字段),替换成字段名即可:
TRUNCATE(DATEADD('MONTH', -2, event_time), 'MONTH')
示例验证
拿你给出的例子来说:
输入时间:2020-03-09 13:46:55
期望结果:2020-01-01 00:00:00
执行过程:
DATEADD('MONTH', -2, '2020-03-09 13:46:55')→ 得到2020-01-09 13:46:55;TRUNCATE('2020-01-09 13:46:55', 'MONTH')→ 最终得到2020-01-01 00:00:00,完全匹配你的需求。
额外小技巧
如果你只需要纯日期格式(不带00:00:00的时间部分),可以用DATE()函数包裹结果:
DATE(TRUNCATE(DATEADD('MONTH', -2, event_time), 'MONTH'))
这样返回的结果就是2020-01-01。
内容的提问来源于stack exchange,提问作者Tomtom
相关产品推荐
相关产品推荐

