2014-12-02 31 views
22

減去30天到我無法減去30天的當前日期,我是一個新手到SQL Server。如何從當前日期使用SQL Server

這是在我的專欄

date 
------------------------------ 
Fri, 14 Nov 2014 23:03:35 GMT 
Mon, 03 Nov 2014 15:18:00 GMT 
Tue, 11 Nov 2014 01:24:47 GMT 
Thu, 06 Nov 2014 19:13:47 GMT 
Tue, 04 Nov 2014 12:37:06 GMT 
Fri, 1 Nov 2014 00:33:00 GMT 
Sat, 5 Nov 2014 01:06:00 GMT 
Sun, 16 Nov 2014 06:37:12 GMT 

數據爲創建我用varchar(50),現在我的問題是我想從日期列顯示過去的15-20天的日期,可以在任何一個上面列幫助解決這個問題? 更新[我如何顯示最近7天的日期順序

+8

[不良習慣踢:選擇了錯誤的數據類型(HTTP:// sqlblog。 com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data-type.aspx) - 你應該總是使用最合適的數據類型 - 這就是他們畢竟有!如果你想存儲日期,可以使用'DATE'或'DATETIME2(n)' - 但肯定是** NOT **'varchar'列! – 2014-12-02 11:21:51

+0

嘿它真的是有用的人thanx的信息,我正在更新我的列 – Madpop 2014-12-02 14:24:53

回答

45

您可以將其轉換爲datetime,然後使用DATEADD(DAY, -30, date)

here

編輯

我懷疑是因爲他們想從當前日期。減去很多人都發現了這個問題(這是問題的頭銜,但不是OP意)。下面的munyul的評論更具體地回答了這個問題。由於意見被認爲是空靈(可在任何給定的點被刪除),在這裏我要重複一遍:

DATEADD(DAY, -30, GETDATE()) 
+5

謝謝。 'DATEADD(DAY,-30,GETDATE())'像魅力一樣工作... – munyul 2015-11-25 10:06:17

+0

簡單而精彩! – Hans 2016-12-27 10:21:04

+0

對於任何人想知道的問題,您可以在MONTH的方法中將DAY替換爲一個月的差額。我會想象任何有效的日期時間值將工作。 – MattD 2017-03-01 15:53:06

1
SELECT DATEADD(day,-30,date) AS before30d 
FROM... 

但強烈建議保持迄今的datetime列,而不是VARCHAR。

7

試試這個:

您的VARCHAR值轉換爲DATETIME,並添加-30作減法。此外,在SQL服務器的格式週五2014年11月14日23時03分35秒GMT未轉換爲DATETIME。嘗試串吧:

SELECT DATEADD(dd, -30, 
     CAST(SUBSTRING ('Fri, 14 Nov 2014 23:03:35 GMT', 6, 21) 
     AS DATETIME)) 
4

試試這個:

SELECT  GETDATE(), 'Today' 
UNION ALL 
SELECT  DATEADD(DAY, 10, GETDATE()), '10 Days Later' 
UNION ALL 
SELECT  DATEADD(DAY, –10, GETDATE()), '10 Days Earlier' 
UNION ALL 
SELECT  DATEADD(MONTH, 1, GETDATE()), 'Next Month' 
UNION ALL 
SELECT  DATEADD(MONTH, –1, GETDATE()), 'Previous Month' 
UNION ALL 
SELECT  DATEADD(YEAR, 1, GETDATE()), 'Next Year' 
UNION ALL 
SELECT  DATEADD(YEAR, –1, GETDATE()), 'Previous Year' 

結果集:

———————– ————— 
2011-05-20 21:11:42.390 Today 
2011-05-30 21:11:42.390 10 Days Later 
2011-05-10 21:11:42.390 10 Days Earlier 
2011-06-20 21:11:42.390 Next Month 
2011-04-20 21:11:42.390 Previous Month 
2012-05-20 21:11:42.390 Next Year 
2010-05-20 21:11:42.390 Previous Year 
相關問題