แบบสอบถาม SQL สำหรับวันที่วันนี้ลบสองเดือน


141

ฉันต้องการเลือกระเบียนทั้งหมดในตารางที่วันที่ของรายการนั้นเก่ากว่า 2 เดือน

ความคิดใดที่ฉันสามารถทำได้

ฉันยังไม่ได้ลองอะไรเลย แต่ฉันมาที่จุดนี้:

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

คำตอบ:


286

หากคุณใช้ SQL Server ลองทำสิ่งนี้:

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

จากการอัพเดทของคุณมันจะเป็น:

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

25
หากคุณใช้ MySQL นี้จะกลายเป็น:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
สเตฟาน


3

คุณอยากได้สิ่งนี้ไหม

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

3
นี่เป็นวิธีแก้ปัญหาสำหรับ MySQL และเขาขอวิธีแก้ปัญหาไปยัง SQL Server มันไม่ทำงานบน SQL Server
กันเดอร์

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 ทางเลือกโดยใช้การประกาศตัวแปร (มันอาจปรับปรุงการอ่านของแบบสอบถาม)

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.