Truy vấn SQL cho ngày hôm nay trừ hai tháng


140

Tôi muốn chọn tất cả các bản ghi trong một bảng trong đó ngày nhập cảnh của chúng cũ hơn 2 tháng.

Bất cứ ý tưởng làm thế nào tôi có thể làm điều đó?

Tôi chưa thử bất cứ điều gì nhưng tôi ở điểm này:

SELECT COUNT(1) FROM FB WHERE Dte > GETDATE()

Câu trả lời:


285

Nếu bạn đang sử dụng SQL Server, hãy thử điều này:

SELECT * FROM MyTable
WHERE MyDate < DATEADD(month, -2, GETDATE())

Dựa trên bản cập nhật của bạn, nó sẽ là:

SELECT * FROM FB WHERE Dte <  DATEADD(month, -2, GETDATE())

25
Nếu bạn sử dụng MySQL, điều này sẽ trở thành:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Stefan


3

Một cái gì đó như thế này sẽ làm việc cho bạn?

SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH);

3
Đây là một giải pháp cho MySQL và anh ấy đã yêu cầu một giải pháp cho SQL Server. Nó không hoạt động trên SQL Server.
Gander

0
SELECT COUNT(1)
FROM FB
WHERE
    Dte BETWEEN CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(month, -1, GETDATE())) AS VARCHAR(2)) + '-20 00:00:00'
        AND CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '-20 00:00:00'

0

TSQL, Thay thế sử dụng khai báo biến. (nó có thể cải thiện khả năng đọc của Truy vấn)

DECLARE @gapPeriod DATETIME = DATEADD(MONTH,-2,GETDATE()); --Period:Last 2 months.

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.