2011-09-28 18 views
14

Tôi đang tìm kiếm một quyết định tối ưu về cách nhận các giá trị bảng theo ngày giờ của họ nhưng chỉ trong vòng MỘT giờ qua.T-SQL (ngày) - cách nhận giá trị trong vòng một giờ?

Ý tôi là một cái gì đó theo cách này (một giả):

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

Đối với mục đích của câu hỏi này Table có các cột:

  • value
  • date

Bất kỳ đoạn mã hữu ích nào được đánh giá cao :)

+0

Như một quy luật, nó là tốt nhất để gọi getdate() một lần và lưu các giá trị trong một biến, sau đó sử dụng các biến theo nhu cầu. Nó tránh tất cả các loại nasties khoảng nửa đêm. – HABO

Trả lời

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

Mô tả các chức năng DATEADD:

DATEADD (datepart , number , date) 

Trả về một thời điểm nhất định với khoảng số quy định (đã ký số nguyên) thêm vào một datepart quy định của ngày đó.

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 

Thông tin thêm:

+0

Thật thú vị. Cảm ơn. Và nếu tôi sử dụng const như -3 trong hàm này thì sao? Liệu nó có cho tôi kết quả giá trị trong 3 giờ qua không? – user592704

+0

Khẳng định. Giá trị số (param 2) được thêm vào (hoặc với một giá trị âm, trừ đi) giá trị ngày (param 3). Nếu bạn sử dụng ngày thay vì giờ, nó sẽ trừ đi 1 (trong ví dụ của tôi) ngày thay vì 1 giờ, và -3 sẽ làm cho nó trừ đi 3 ngày. –

2

Điều gì đó như thế này sẽ hoạt động.

SELECT value 
FROM Table 
WHERE date >= dateadd(hour,-1,getdate()) 
    and date <= getdate() 
+0

Bạn nói đúng. Tôi đã thay đổi truy vấn ngay bây giờ. – Gabe

+0

Nhận xét đã được trả lại. Tôi không chắc chắn liệu => và <= hoặc giữa có hiệu quả hơn không ... một ngày nào đó tôi sẽ phải kiểm tra. –

+3

@TheEvilGreebo - Không có gì khác biệt. Vị từ sẽ xuất hiện dưới dạng '> =' và '<=' trong kế hoạch. –

Các vấn đề liên quan