проверка названия месяца по метке времени Unix, хранящейся в MySQL DB (используя php) - PullRequest
1 голос
/ 27 августа 2010

Не удается решить, как сделать следующее: я хочу перечислить все события за данный месяц, причем каждое событие имеет дату, сохраненную в виде метки времени unix в базе данных.В моем запросе sql я должен манипулировать отметкой времени, чтобы я мог проверить, совпадает ли дата с тем же месяцем, что и строка месяца, с которой я сравниваю, например, «октябрь».Каков будет лучший способ сделать это?Спасибо

Ответы [ 3 ]

6 голосов
/ 27 августа 2010

Выбирает все столбцы из таблицы events, если месяц равен октябрю (10-й месяц).

SELECT * FROM events WHERE MONTH(FROM_UNIXTIME(event_date)) = 10

Дополнительные функции, относящиеся ко времени и дате, можно найти в Руководстве по MySQL

2 голосов
/ 27 августа 2010

Вы можете использовать что-то похожее на это:

SELECT * FROM my_table
WHERE LEFT(MONTHNAME(my_date), 3) = LEFT(('AUGUST'), 3);

Вам может не потребоваться функция LEFT, если вы вводите полное название месяца:

SELECT * FROM my_table
WHERE MONTHNAME(my_date) = 'AUGUST';

Если ваш столбецчувствителен к регистру, вы можете изменить его так, чтобы он выглядел так:

SELECT * FROM my_table
WHERE UPPER(LEFT(MONTHNAME(my_date), 3)) = LEFT(('AUGUST'), 3);

Кроме того, вам может потребоваться конвертировать из формата отметки времени Unix:

SELECT * FROM my_table
WHERE UPPER(LEFT(FROM_UNIXTIME(MONTHNAME(my_date)), 3)) = LEFT(('AUGUST'), 3);
1 голос
/ 27 августа 2010

MySQL может преобразовывать метки времени Unix в / из своих собственных собственных типов даты / даты / времени с помощью FROM_UNIXTIME() и UNIX_TIMESTAMP(), после чего вы можете применять стандартные функции манипуляции с датой / временем, такие как MONTH().Полные документы по функциям манипуляции с датой / временем здесь .

Если вы делаете подобные вещи с большим набором данных, вам лучше рассчитать начальную / конечную временные метки, в зависимости от того, чтоконкретный месяц, в котором вы заинтересованы. Например.Если вас интересует март '09, то рассчитайте метку времени Unix для 12:00:00 утра 1 марта и 11:59:59 вечера 31 марта.Затем вы можете выполнить простое числовое сравнение для вашего поля отметки времени, которое позволит использовать индексы.

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