Jam*_*son 12 mysql timestamp unix-timestamp
我将所有用户的生日存储为UNIXtimestamp,并希望每天向当天有生日的用户发送电子邮件.
我需要创建一个MySQL查询,它将获取今天包含生日的所有行.
看起来这应该是相当简单的,但也许我只是过于复杂.
Sag*_*chi 20
这应该工作:
SELECT *
FROM USERS
WHERE
DATE_FORMAT(FROM_UNIXTIME(birthDate),'%m-%d') = DATE_FORMAT(NOW(),'%m-%d')
Run Code Online (Sandbox Code Playgroud)
这是一个属性考虑到闰年的答案,并将始终为您提供2月29日生日与3月1日同时的用户.
SELECT *
FROM USERS
WHERE
DATE_FORMAT(FROM_UNIXTIME(birthDate),'%m-%d') = DATE_FORMAT(NOW(),'%m-%d')
OR (
(
DATE_FORMAT(NOW(),'%Y') % 4 <> 0
OR (
DATE_FORMAT(NOW(),'%Y') % 100 = 0
AND DATE_FORMAT(NOW(),'%Y') % 400 <> 0
)
)
AND DATE_FORMAT(NOW(),'%m-%d') = '03-01'
AND DATE_FORMAT(FROM_UNIXTIME(birthDate),'%m-%d') = '02-29'
)
Run Code Online (Sandbox Code Playgroud)
小智 5
如果出生日期存储在表中,您可以使用下面的查询。
今天生日:
select * from TABLENAME
where DAY(FIELDNAME) = DAY(CURDATE())
and MONTH(FIELDNAME) = MONTH(CURDATE());
Run Code Online (Sandbox Code Playgroud)
昨天生日:
select * from TABLENAME
where DAY(FIELDNAME) = DAY(DATE_ADD(CURDATE(), INTERVAL -1 DAY))
and MONTH(FIELDNAME) = MONTH(CURDATE());
Run Code Online (Sandbox Code Playgroud)
明天生日:
select * from TABLENAME
where DAY(FIELDNAME) = DAY(DATE_ADD(CURDATE(), INTERVAL 1 DAY))
and MONTH(FIELDNAME) = MONTH(CURDATE());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21543 次 |
| 最近记录: |