Если записи хранятся как DATETIME, будут выбраны все записи за предыдущую дату, независимо от временной части. Запущенный в 23:59:59, запрос вернет все записи за последние 48часы, а не 24.
Quassnoi
18
Если вы хотите выбрать последние 24 часа из поля даты и времени, замените curate () на now (). Это также включает время.
Haentz
564
В 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')
Это ответ, который лучше всего отвечает на конкретный вопрос: как вернуть PRECEDING 24 ЧАСА (с настоящего момента), в отличие от предыдущих 24 (который предлагает все результаты за предыдущий день). Это отвечает моим требованиям, это получает мой upvote. РЕДАКТИРОВАТЬ: стоит упомянуть столбец table_name.the_date должна быть метка времени.
Энтони Креган
8
Какой SQL не был указан, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Если вы используете типы дат с повышенной точностью 2008 года, используйте вместо этого новую функцию sysdatetime (), равно как и при использовании внутреннего времени UTC для внутреннего вызова вызовов UTC.
Если рассматриваемая временная метка является временной меткой UNIX Вам необходимо сначала преобразовать временную метку UNIX (например, 1462567865) в метку времени mysql или данные.
Предполагается, что используемый движок - MySQL, поскольку FROM_UNIXTIME () - это функция MySQL. Для SQL Server используйте: SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField) Если вам нужна точность в миллисекундах в SQL Server 2016 и более поздних версиях, используйте: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
Это единственный, который работал для меня на MySQL. По какой-то причине, когда я пытался выбрать SELECT * FROM myTable WHERE myDate> DATE_SUB ('2018-06-13 00:00:00', INTERVAL 24 HOUR); Я все еще получал записи с 2018-06-14.
jDub9
1
SELECT*FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
зачем вам нужно добавлять «and order_date <= GETDATE ()», когда вы уже ищете последние 24 часа с момента выполнения этого запроса? На самом деле нет смысла включать эту часть в предложение where, когда вы уже упоминали «GETDATE» в первом. Вам лучше сделать это "order_date> = DateAdd (DAY, -1, GETDATE ())" вот и все!
Ответы:
источник
DATETIME
, будут выбраны все записи за предыдущую дату, независимо от временной части. Запущенный в23:59:59
, запрос вернет все записи за последние48
часы, а не24
.В
MySQL
:В
SQL Server
:В
Oracle
:В
PostgreSQL
:В
Redshift
:В
SQLite
:В
MS Access
:источник
function getdate() does not exist
. Заменил его наcurrent_date
и он работал нормально.CURDATE()
, не возвращает дату с частью времени, поэтому она идет00
. Я исправил это, используяNOW()
вместоCURDATE()
.MySQL:
ИНТЕРВАЛ может быть в ГОД, МЕСЯЦ, ДЕНЬ, ЧАС, МИНУТА, ВТОРОЙ
Например, за последние 10 минут
источник
Какой SQL не был указан, SQL 2005/2008
Если вы используете типы дат с повышенной точностью 2008 года, используйте вместо этого новую функцию sysdatetime (), равно как и при использовании внутреннего времени UTC для внутреннего вызова вызовов UTC.
источник
в postgres, предполагая, что ваш тип поля является временной меткой:
источник
Если рассматриваемая временная метка является временной меткой UNIX Вам необходимо сначала преобразовать временную метку UNIX (например, 1462567865) в метку времени mysql или данные.
источник
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
Если вам нужна точность в миллисекундах в SQL Server 2016 и более поздних версиях, используйте:SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
источник
Здравствуйте, сейчас прошло много времени с оригинального поста, но у меня возникла похожая проблема, и я хочу поделиться.
Я получил поле даты и времени с этим форматом ГГГГ-ММ-ДД чч: мм: сс, и я хочу получить доступ к нему целый день, так что вот мое решение.
Функция DATE () в MySQL: извлечение части даты из выражения даты или даты и времени.
с этим я получаю весь регистр строк в этот день.
Я надеюсь, что это поможет любому.
источник
источник
В SQL Server (за последние 24 часа):
источник