T-SQL - 获取两个日期之间的值

时间:2011-09-30 19:34:38

标签: sql-server tsql

我刚看了这样一个例子,它显示了如何按日期获取所有cols,这是......

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)

但它不起作用:(所以我的问题是如何在这种声明中使用col my_date_col

赞赏任何有用的评论

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

摆脱CONVERT语句,你想比较日期,而不是varchars。

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

答案 3 :(得分:0)

select value1, date_column from @Table
WHERE date_column between date1 and date2