2011-09-30 100 views
1

我只是看着它展示瞭如何獲得通過日期,所有的cols這裏就是這樣的例子之間...T-SQL - 獲得價值兩個日期

DECLARE @MyGetDate DATETIME 

SELECT @MyGetDate = '2 Mar 2003 21:40' 

SELECT * 
FROM @Table 
WHERE convert(varchar, @MyGetDate, 14) BETWEEN convert(varchar, startDate, 14) AND convert(varchar, endDate, 14) 

...但事情是我努力將其修改爲在過去50分鐘內獲取值。這是

SELECT value, my_date_col 
FROM myTable 
WHERE convert(varchar, my_date_col, 14) BETWEEN convert(varchar, dateadd(minute, -50, getdate()), 14) AND convert(varchar, getdate(), 14) 

但它不工作:(所以我的問題是如何利用山坳my_date_col在這樣一種說法?

任何有用的註釋表示讚賞

+1

你爲什麼轉換您的DATETIME類型VARCHAR?直接比較它們。 – Oded

+0

我試過,但它也沒有工作:(所以我試圖基於這個主題http://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/ – user592704

+0

「它不起作用「是一個很差的問題描述。**什麼**沒有工作?你期望發生什麼?什麼沒有發生?發生了什麼? – Oded

回答

3

我承擔您的my_date_col是DateTime列,那麼您不需要投射。因爲該示例使用日期的字符串表示形式,所以需要投射。

DECLARE @date DATETIME 
SET @date = GETDATE() 

SELECT value, my_date_col 
FROM myTable WHERE my_date_col BETWEEN dateadd(minute, -50, @date) AND @date 
+0

如果將'dateadd(minute,-50,@date)'放入查詢之外的變量中會更好 – DavidEG

1

這應該只是罰款,假設my_date_colDATETIME

SELECT value, my_date_col 
FROM myTable 
WHERE my_date_col BETWEEN dateadd(minute, -50, getdate()) AND getdate() 

如果返回什麼,有沒有在最後50分鐘my_date_col

0

擺脫CONVERT語句,你想比較日期,而不是varchars。

SELECT value, my_date_col 
FROM myTable 
WHERE my_date_col BETWEEN dateadd(minute, -50, getdate()) AND getdate(), 14 
0
select value1, date_column from @Table 
WHERE date_column between date1 and date2