जवाबों:
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()
।
माई एसक्यूएल :
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
INTERVAL YEAR, MONTH, DAY, HOUR, MINUTE, SECOND में हो सकता है
उदाहरण के लिए, अंतिम 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 () फ़ंक्शन का उपयोग करें, समान रूप से यूटीसी काल का उपयोग करके आंतरिक रूप से यूटीसी कॉल पर स्वैप करें।
अगर माना जाने वाला टाइमस्टैम्प एक यूनिक्स टाइमस्टैम्प है, तो आपको सबसे पहले यूनिक्स टाइमस्टैम्प (जैसे 1462567865) को mysql टाइमस्टैम्प या डेटा में बदलना होगा।
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'
इस के साथ मैं इस दिन में सभी पंक्ति रजिस्टर मिलता है।
मुझे उम्मीद है कि इसकी मदद किसी को भी होगी।
SQL सर्वर में (पिछले 24 घंटों के लिए):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()