| Есть задача выбрать из таблиц пользователей всех, у кого сегодня день рождения. Данные хранятся в двух таблицах: одна с id, паролем и логином; вторая с всякими там дополнительными данными, в том числе с датой рождения. Они объединяются по полям id и internalKey.
Запрос:
SELECT
wu.id AS 'id', wu.username AS 'username', wua.fullname AS 'fullname', wua.surname AS 'surname', wua.email AS 'email',
IF(wua.gender = 1,'',
IF(wua.gender = 2,'','-')) AS 'gender',
IF(wua.blocked,'','-') AS 'blocked', wua.phone,
IF(wua.mobilephone = '', '-', wua.mobilephone) AS mobilephone,
IF(wua.fax = '', '-', wua.fax) AS fax,
IF(wua.dob = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.dob), '%d.%m')) AS dob,
IF(wua.empdate = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.empdate), '%d.%m.%Y')) AS empdate,
IF(wua.photo='', 'assets/templates/front/images/nophoto.gif', wua.photo) AS photo,
wua.comment, wua.education, wua.hobby, wua.experience
FROM `intinkoff`.`modx_web_users` wu
INNER JOIN `intinkoff`.`modx_web_user_attributes` wua ON wua.internalKey = wu.id
Возвращает всх пользователей и в поле dob торчит дата в формате "dd.mm" как и ожидалось и у некоторых сегодня день рождения, т. е. дата совпадает с текущей.
Запрос SELECT DATE_FORMAT(NOW(), '%d.%m') возвращает текущую дату в формате "dd.mm" как и ожидалось. Но запрос
SELECT
wu.id AS 'id', wu.username AS 'username', wua.fullname AS 'fullname', wua.surname AS 'surname', wua.email AS 'email',
IF(wua.gender = 1,'',
IF(wua.gender = 2,'','-')) AS 'gender',
IF(wua.blocked,'','-') AS 'blocked', wua.phone,
IF(wua.mobilephone = '', '-', wua.mobilephone) AS mobilephone,
IF(wua.fax = '', '-', wua.fax) AS fax,
IF(wua.dob = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.dob), '%d.%m')) AS dob,
IF(wua.empdate = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.empdate), '%d.%m.%Y')) AS empdate,
IF(wua.photo='', 'assets/templates/front/images/nophoto.gif', wua.photo) AS photo,
wua.comment, wua.education, wua.hobby, wua.experience
FROM `intinkoff`.`modx_web_users` wu
INNER JOIN `intinkoff`.`modx_web_user_attributes` wua ON wua.internalKey = wu.id
WHERE dob LIKE DATE_FORMAT(NOW(), '%d.%m')
не возвращает ничего. В чем же дело?
И если написать что-то вроде WHERE dob LIKE DATE_FORMAT(UNIX_TIMESTAMP(), '%d.%m'), то результат тоже пустой. :( | |