所以我有一个非常具体的任务。我运行一些sql语句,其中有一个临时表,其中包含特定于国家/地区的日期范围。
e.g。
INSERT INTO #dateRange(durationDesc, contryCode,startDate,endDate)
VALUES ('Weekly - TY','UK','20160919','20160925')
,('Weekly - LY','UK','20150921','20150927')
,('Weekly - LW','UK','20150912','20150918')
所以,相应的前一年。另一个范围是月初至今。
这是最好的方法吗?我更喜欢一个我只需要输入一个日期,其余的可以更新。
如有任何问题,请随时提出。
答案 0 :(得分:0)
您始终可以按GETDATE()获取当前系统日期时间,然后通过DATEADD()
进行相应修改例如:
SELECT DATEADD(YEAR, -1, GETDATE()) -- Result in 1 year prior the current system datetime.
SELECT DATEADD(MONTH, 13, GETDATE()) -- Result in 13 months after the current system datetime.
在您的代码段中,您似乎将日期时间转换为yyyymmdd
字符串格式(虽然我非常怀疑必要性),这可以通过CONVERT
来实现:
SELECT CONVERT(VARCHAR, DATEADD(YEAR, -1, GETDATE()), 112)
例如,如果今天是2016年10月26日,那么它应该在今天之前的1年以yyyymmdd格式显示结果,20151026