Відповіді:
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.
Якщо часова марка вважається часовою міткою UNIX, потрібно спочатку перетворити часову марку UNIX (наприклад, 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
Привіт, зараз я минув багато часу від початкового поста, але у мене була подібна проблема, і я хочу поділитися.
У мене з’явилося поле дати в такому форматі РРРР-ММ-ДД год. Год .: мм: с, і я хочу отримати доступ цілий день, тому ось моє рішення.
Функція 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()