SQL-запрос, чтобы исключить только данные за последние 24 часа? - PullRequest
3 голосов
/ 23 февраля 2010

У меня есть следующие данные:

Table Name: NODE
NID | Name | Date
001 | One  | 1252587739

Дата - это метка времени Unix. Мне нужен запрос, по которому я могу выбрать только те узлы, у которых «Дата» старше 24 часов. Примерно так:

SELECT * FROM NODE WHERE Date < NOW() - SOMETHING
  1. Кто-нибудь знает, как это сделать?
  2. Учитывает ли часть NOW () - SOMETHING, что дата хранится как метка времени Unix?

Ответы [ 3 ]

6 голосов
/ 23 февраля 2010

метка времени Unix указана в секундах. Это работает с MySQL:

SELECT * FROM NODE WHERE Date < (UNIX_TIMESTAMP(NOW()) - 24*60*60)
2 голосов
/ 23 февраля 2010

где дата (чч, дата, сейчас ()) <24 </p>

1 голос
/ 23 февраля 2010

В соответствии с определением «Unix Timestamp = количество секунд с 1 января 1970 года» и на основе MS SQL Server (версии 7.0 и выше):

SELECT *
 from NODE
 where datediff(ss, dateadd(ss, Date, 'Jan 1, 1970'), getdate()) < 86400

Самая внутренняя скобка добавляет число секунд к 1 января 1970 года, чтобы получить дату и время строки в формате сервера SQL, внешняя скобка получает число секунд между этой датой и «сейчас», а 86400 - это количество секунд в 24 ч. (Но перепроверьте это - я не могу отладить это прямо сейчас, и я мог бы смешать порядок параметров функции.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...