动态更改临时表

时间:2016-10-26 15:10:03

标签: sql-server tsql

所以我有一个非常具体的任务。我运行一些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')

所以,相应的前一年。另一个范围是月初至今。

这是最好的方法吗?我更喜欢一个我只需要输入一个日期,其余的可以更新。

如有任何问题,请随时提出。

1 个答案:

答案 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