Ответы:
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()