Ответы:
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'
с этим я получаю весь регистр строк в этот день.
Я надеюсь, что это поможет любому.
В SQL Server (за последние 24 часа):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()