我正在编写一个munit测试用例并使用H2内存实例模拟我的真实SQL Server数据库表。
我的查询有日期条件来返回上个月的记录,所以我一直在寻找适用于SQL Server和H2的东西。最后,我发现下面的语法在两者中都有效。
select
DATEADD(MONTH, DATEDIFF(MONTH, '1900-01-01', GETDATE()) - 1, '1900-01-01');
在SQL Server中,它正确地给了我上个月的开始日期,但在H2中,它给了我当月的开始日期。如果将-1
更改为2
,则H2可以正常运行,但SQL Server会返回错误的日期。
有人可以帮助我如何获得正确的语法吗?
与上个月的最后一天相同的问题 -
select
DATEADD(D, -1, DATEADD(MONTH, DATEDIFF(MONTH, '1900-01-01', GETDATE()), '1900-01-01'))