2013-05-20 67 views
33

Tôi có truy vấn:Cách chọn dữ liệu từ 30 ngày?

SELECT name 
FROM (
SELECT name FROM 
Hist_answer 
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) 
UNION ALL 
SELECT name FROM 
Hist_internet 
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) 
) x 
GROUP BY name ORDER BY name 

Nhưng DATE_SUB là một hàm MySQL và tôi cần chức năng cho MSSQL 2008

Cho tôi xin làm thế nào để chọn dữ liệu từ 30 ngày bằng cách sử dụng MSSQL 2008?

PS: Data type của datetimesmalldatetime

Trả lời

43

Bạn nên sử dụng DATEADD là Sql server vì vậy nếu thử lựa chọn đơn giản này, bạn sẽ thấy ảnh hưởng đến

Select DATEADD(Month, -1, getdate()) 

Kết quả

2013-04-20 14:08:07.177 

trong trường hợp của bạn thử truy vấn này

SELECT name 
FROM (
SELECT name FROM 
Hist_answer 
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE()) 
UNION ALL 
SELECT name FROM 
Hist_internet 
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE()) 
) x 
GROUP BY name ORDER BY name 
+0

ERROR 'Cú pháp không chính xác gần từ khóa 'CURRENT_DATE'.' –

+1

Thử lại, Truy vấn đã thay đổi, kể từ lần cuối bạn sao chép – Rab

17

Hãy thử điều này: Sử dụng này, bạn có thể chọn ngày 30 ngày qua,

SELECT DATEADD(DAY,-30,GETDATE()) 
+0

chỉ cập nhật DATE_SUB của bạn với DATEADD (DAY, -30, GETDATE()) – Anvesh

8

Đối với những người không thể có được DATEADD để làm việc, hãy thử này để thay thế: (NOW() - INTERVAL 1 THÁNG)

+1

Tốt nhất. Điều này làm việc tốt! Cảm ơn. –

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