SELECT Table.date FROM Table WHERE date > current_date - 10;
สิ่งนี้ใช้ได้กับ PostgreSQL หรือไม่
SELECT Table.date FROM Table WHERE date > current_date - 10;
สิ่งนี้ใช้ได้กับ PostgreSQL หรือไม่
คำตอบ:
ใช่สิ่งนี้ใช้ได้ใน PostgreSQL (สมมติว่าคอลัมน์ " วันที่ " เป็นประเภทข้อมูลdate
) ทำไมคุณไม่ลองดูล่ะ
รูปแบบ ANSI SQL มาตรฐานจะเป็น:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
ฉันชอบรูปแบบนั้นมากกว่าเพราะทำให้อ่านง่ายขึ้น (แต่ก็เหมือนกับcurrent_date - 10
)
interval '10 day'
คือไวยากรณ์ของ Postgres interval '10' day
เป็นไวยากรณ์ที่ยึดตามมาตรฐาน SQL และสนับสนุนโดย Postgres
10
ไม่ใช่9
http://www.postgresql.org/docs/current/static/functions-datetime.htmlแสดงตัวดำเนินการที่คุณสามารถใช้สำหรับการทำงานกับวันที่และเวลา (และช่วงเวลา)
ดังนั้นคุณต้องการ
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
ตัวดำเนินการ / ฟังก์ชันข้างต้นได้รับการบันทึกไว้โดยละเอียด:
ความเข้าใจของฉันจากการทดสอบของฉัน (และPostgreSQL dox ) คือคำพูดต้องทำแตกต่างจากคำตอบอื่น ๆ และควรมี "วัน" ดังนี้:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10 day';
แสดงให้เห็นที่นี่ (คุณควรจะสามารถเรียกใช้สิ่งนี้บน Postgres db):
SELECT DISTINCT current_date,
current_date - interval '10' day,
current_date - interval '10 days'
FROM pg_language;
ผลลัพธ์:
2013-03-01 2013-03-01 00:00:00 2013-02-19 00:00:00
ฉันจะตรวจสอบประเภทข้อมูล
current_date มีประเภทข้อมูล "วันที่" 10 คือตัวเลขและ Table.date - คุณต้องดูตารางของคุณ
คุณสามารถใช้ระหว่าง:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
between
จะต้องมีค่าต่ำสุดครั้งแรกดังนั้นนี้จะต้องทำอย่างถูกต้องเป็น SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
เพียงแค่สรุปข้อความค้นหาหากคุณต้องการทำงานกับวันที่ใดก็ตามแทนที่จะเป็นวันที่ปัจจุบัน:
SELECT Table.date
FROM Table
WHERE Table.date > '2020-01-01'::date - interval '10 day'