ฉันกำลังมองหาส่วนwhere
คำสั่งที่สามารถใช้เพื่อดึงข้อมูลระเบียนในช่วง 24 ชั่วโมงที่ผ่านมาหรือไม่
ฉันกำลังมองหาส่วนwhere
คำสั่งที่สามารถใช้เพื่อดึงข้อมูลระเบียนในช่วง 24 ชั่วโมงที่ผ่านมาหรือไม่
คำตอบ:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
สิ่งนี้จะเลือกระเบียนทั้งหมดจากวันที่ก่อนหน้าโดยไม่คำนึงถึงส่วนเวลา รับการทำงานใน23:59:59
แบบสอบถามจะส่งกลับระเบียนทั้งหมดที่ผ่านมาชั่วโมงไม่48
24
ในMySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
ในSQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
ในOracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
ในPostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
ในRedshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
ในSQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
ในMS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist
ฉันได้รับ แทนที่ด้วยcurrent_date
และทำงานได้ดี
CURDATE()
00
ฉันคงได้โดยใช้แทนNOW()
CURDATE()
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
ช่วงเวลาสามารถเป็นปี, เดือน, วัน, ชั่วโมง, นาที, วินาที
ตัวอย่างเช่นในช่วง 10 นาทีที่ผ่านมา
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
ไม่ได้ระบุ SQL ตัวใด SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
หากคุณอยู่ในประเภทวันที่ความแม่นยำที่เพิ่มขึ้นของปี 2008 ให้ใช้ฟังก์ชัน sysdatetime () ใหม่แทนหากใช้ UTC เวลาภายในเป็นการสลับไปยังการโทร UTC ภายใน
ใน postgres สมมติว่าประเภทเขตข้อมูลของคุณเป็นเวลา:
เลือก * จากตารางที่ date_field> (ตอนนี้ () - ช่วงเวลา '24 ชั่วโมง ');
หากการประทับเวลาที่พิจารณาคือการประทับเวลา UNIX คุณต้องแปลงการประทับเวลา UNIX ครั้งแรก (เช่น 1462567865) เป็น mysql timestamp หรือข้อมูล
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
หากคุณต้องการความแม่นยำเป็นมิลลิวินาทีใน SQL Server 2016 และใช้ในภายหลัง: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
สวัสดีตอนนี้ฉันผ่านเวลามากจากโพสต์ต้นฉบับ แต่ฉันมีปัญหาที่คล้ายกันและฉันต้องการแบ่งปัน
ฉันมีเขตข้อมูลวันที่ในรูปแบบนี้ YYYY-MM-DD hh: mm: ss และฉันต้องการเข้าถึงทั้งวันดังนั้นนี่คือวิธีแก้ปัญหาของฉัน
ฟังก์ชั่น DATE () ใน MySQL: แยกส่วนวันที่ของการแสดงออกวันที่หรือวันที่และเวลา
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
ด้วยสิ่งนี้ฉันได้รับการลงทะเบียนแถวทั้งหมดในวันนี้
ฉันหวังว่ามันจะช่วยให้ทุกคน
SELECT *
FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
ใน SQL Server (24 ชั่วโมงล่าสุด):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()