T-SQL(日期)-如何在一小时内获取值?

17

我正在寻找一种最佳决策,根据日期和时间获取表格值,但仅限于过去的一个小时。

我的意思是这样的(伪代码):

 SELECT value FROM Table WHERE date BETWEEN getdate() AND getdate()-ONE_HOUR

针对这个问题,Table 包含以下列:

  • value
  • date

感谢提供任何有用的片段 :)


一般来说,最好只调用GetDate()一次并将其值保存在变量中,然后根据需要使用该变量。这样可以避免所有关于午夜的问题。 - HABO
2个回答

24
SELECT Value
FROM Table
WHERE Date between dateadd(hour, -1, getdate()) and getdate()

DATEADD 函数的描述:

DATEADD (datepart , number , date )
返回指定日期,其中添加了特定数字间隔(有符号整数)到该日期的指定日期部分。
datepart     Abbreviations  
-----------  -------------
year         yy, yyyy
quarter      qq, q
month        mm, m
dayofyear    dy, y
day          dd, d
week         wk, ww
weekday      dw, w
hour         hh 
minute       mi, n
second       ss, s
millisecond  ms 
microsecond  mcs 
nanosecond   ns 

更多信息:


这很有趣。谢谢。如果我在这个函数中使用const,比如-3,会给我过去3小时的值结果吗? - user592704
肯定的。数字值(参数2)被加到(或者用负数减去)日期值(参数3)。如果你使用天而不是小时,它会减去1天(在我的例子中),-3会使它减去3天。 - The Evil Greebo

2
像这样的东西应该可以工作。
SELECT value
FROM Table 
WHERE date >= dateadd(hour,-1,getdate())
   and date <= getdate()

已注释。 我不确定 >= 和 <= 还是 between 更有效,不过...总有一天我会测试的。 - The Evil Greebo
3
完全没有区别。谓词在计划中将以>=<=的形式出现。 - Martin Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接