метки времени unix и php - PullRequest
1 голос
/ 04 мая 2010

У меня есть список меток времени Unix в базе данных, и я хочу выбрать те, которые с сегодняшнего дня.

Т.е. если сегодня Tueday, я хочу получить все отметки времени, которые были сделаны сегодня? Является ли это возможным? Есть ли такие вещи как strtotime("Today")?

Любая помощь будет отличной

Ответы [ 6 ]

2 голосов
/ 04 мая 2010
$start = strtotime(date('Y-m-d 00:00:00')); // Current date, at midnight
$end = strtotime(date('Y-m-d 23:59:59')); // Current date, at 11:59:59 PM

затем вы можете просто выбрать, где отметка времени находится между двумя вышеуказанными отметками времени:

"SELECT FROM `foo` WHERE `timestamp` BETWEEN '{$start}' and '{$end}'"
2 голосов
/ 04 мая 2010

вы можете использовать mktime () , чтобы сгенерировать временную метку для начала дня, а затем найти записи базы данных с временной меткой, большей этой.

1 голос
/ 04 мая 2010

Вы можете преобразовать метки времени Unix в даты SQL в SQL, используя FROM_UNIXTIME(), затем сравнить их с NOW()

SELECT * FROM `tablename` WHERE DATE(FROM_UNIXTIME(`dateFld`)) = DATE(NOW());
0 голосов
/ 04 мая 2010

FROM_UNIXTIME(somefield) можно сравнить с CURDATE (), если вы используете MySQL

SELECT * FROM mytable WHERE FROM_UNIXTIME(datefield,'%Y-%m-%d') = CURDATE();

ETA: Хорошо, я был охвачен сомнением, когда этот ответ был уценен. Итак, я пошел и сделал пару тестов. Учитывая MySQL, это определенно работает. Так почему же модем?

Рассмотрим этот тест, который выводит 2 одинаковых поля для каждой строки в таблице:

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CURDATE()),'%Y-%m-%d')  a , CURDATE() b
  FROM tablewithsomerows 
  WHERE FROM_UNIXTIME(UNIX_TIMESTAMP(CURDATE()),'%Y-%m-%d') = CURDATE();
0 голосов
/ 04 мая 2010

Если вы используете mysql:

SELECT * FROM table WHERE DATE(NOW()) = DATE(FROM_UNIXTIME(timestampcol))
0 голосов
/ 04 мая 2010

Проверьте, равны ли DAY (NOW ()) и MONTH (NOW ()) и YEAR (NOW ()) соответствующему значению DAY (временная метка) и MONTH (временная метка) и YEAR (временная метка).

select timestamp from table where DAY(NOW()) = DAY(timestamp) AND MONTH(NOW()) = MONTH(timestamp) AND YEAR(NOW()) = YEAR(timestamp)
...