我正在尋找一些T-SQL代碼,應該選擇「從當前日期返回的一年(同一時間是在一月份的上個星期天)」 。從SQL Server自動接收日期 - T-SQL
例如:
Current day expected result
2017-02-05 2016-01-31
2017-01-05 2015-01-25
2018-02-19 2017-01-29
2018-01-19 2016-01-31
2019-02-28 2018-01-28
請注意:一年的最後一個星期日開始在一月
我這是在SQL Server 2014中使用了一些T-SQL代碼:
select
convert(varchar(10), DATEADD(day, DATEDIFF(day, '19000107', DATEADD(month, DATEDIFF(MONTH, 0, CONVERT(date, CONVERT(VARCHAR(4), (CASE WHEN MONTH(GetDate()) = 1 THEN CONVERT(VARCHAR(4), GetDate(), 112) - 1 ELSE CONVERT(VARCHAR(4), GetDate(), 112) END), 112) + '0101')), 30))/7 * 7, '19000107'), 120)
上面的代碼選擇當年的日期(1月份的上個星期日)。但是我希望T-SQL代碼選擇去年(1月份的上個星期日)的日期。
詳情 - 我希望T-SQL代碼從下表產生預期的結果
Current day T-SQL code answer expected result
2017-02-05 2017-01-29 2016-01-31
2017-01-05 2016-01-31 2015-01-25
2018-02-19 2018-01-28 2017-01-29
2018-01-19 2017-01-29 2016-01-31
2019-02-28 2019-01-27 2018-01-28
任何幫助,請。
解析和處理日期爲字符串一般是令人難以接受的,我收集你沒有寫那表情。如果你想要一年前的日期,只需用'dateadd(year,-1,getdate()'替換每一個'getdate()'。 – shawnt00