Как нарезать дату, чтобы я мог сравнить только с месяцем и днем?
У меня проблема с датой. У меня есть дата рождения, например. 1993-06-01 в базе данных. А теперь я хочу сравнить с текущей датой, поэтому я могу высветить сообщение о дне рождения. Как это можно сравнить только с полем месяца и дня. Особенно в запросе, поэтому я могу прикрепить их имя с сообщением о дне рождения. Используемые рамки Pyrocms.
2 ответа
Решение
Для PHP просто используйте DateTime.
Пример:
$date1 = new DateTime('1993-06-01');
$date2 = new DateTime();
if ($date1->format('m-d') === $date2->format('m-d')) {
// send the birthday message
}
Если вы хотите сделать это в SQL, используйте MONTH()
а также DAY()
,
Пример:
$sql = "SELECT * FROM `table` WHERE MONTH(`date_column`) = " . $date->format('n') . " AND DAY(`date_column`) = " . $date->format('j');
Если вам нужно сравнить с месяцем, у вас есть эта функция в MySQL:
MONTH(date)
Это возвращает месяц (в числах 1 .. 12)
У вас также есть
MONTHNAME(date)
который возвращает месяц в строке ("январь", "февраль", ...)
За день у вас есть:
DAYNAME(date) --> returns ('Sunday','Monday' ...)
DAYOFWEEK(date) --> returns (1 = Sunday, 2 = Monday, …, 7 = Saturday)
Вы можете посмотреть все функции даты и времени в этой ссылке MySql dev