我刚看了这样一个例子,它显示了如何按日期获取所有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 ?
赞赏任何有用的评论
答案 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_col
是DATETIME
:
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