我有一堆财务报告,我们希望能够将两个输入(年和季度)作为变量传递给它们。
我这样做,但我真的不喜欢它:
declare @quarter int,
@year int,
@date date
set @quarter = 4
set @year = 2018
set @date = cast(@year as varchar(4)) + '-01-01'
set @date = dateadd(quarter, @quarter - 1, @date)
print @date
问题从整数输入重建日期的最佳方法是什么?
期望的结果:
2018-10-01
怎么样
或者如果您仍在使用 SQL 2008:
我建议不要使用像“-”或“/”这样的日期分隔符,它取决于区域设置,使用
YYYYMMDD
格式。db<>在这里摆弄
您可以在 SQL Server 中创建日期维度或日历表并查询它
我会完全避免使用字符串,而是将日期算术与已知(甚至未知!)零纪元结合使用。
这避免了字符串到日期的比较,这种比较是混乱的、依赖于文化的和昂贵的。