use*_*420 1 mysql phpmyadmin unix-timestamp
我正在尝试设置一个查询,以便拉出今天生日那天的所有客户.我正在使用phpmyadmin localhostvia Unix socket,生日被设置为DATE.
所有我需要的是返回的firstname (emp.emp_firstname as第一个名字),lastname (emp.emp_lastname as姓氏)和date of birth (emp_birthday as 'dob')
select emp_firstname as first_name,
emp_lastname as last_name,
emp_birthday as dob
from emp
where month(emp_birthday) = month(curdate())
and day(emp_birthday) = day(curdate())
Run Code Online (Sandbox Code Playgroud)
一个简单的解决方案是这样的:
SELECT
emp_firstname AS first_name,
emp_lastname AS last_name,
emp_birthday AS dob
FROM
emp
WHERE
MONTH(emp_birthday)=MONTH(CURDATE())
AND DAY(emp_birthday)=DAY(CURDATE())
Run Code Online (Sandbox Code Playgroud)
或者如果你想考虑闰年,你可以使用这个:
SELECT
emp_firstname AS first_name,
emp_lastname AS last_name,
emp_birthday AS dob
FROM
emp
WHERE
emp_birthday +
INTERVAL
YEAR(CURDATE())-YEAR(emp_birthday) +
(MONTH(emp_birthday)<MONTH(CURDATE())
OR (MONTH(emp_birthday)=MONTH(CURDATE()) AND DAY(emp_birthday)<DAY(CURDATE())))
YEAR = CURDATE()
Run Code Online (Sandbox Code Playgroud)
如果某人的出生日期是2月29日,而今天是2月28日,而今年不是闰年,那么我的上一次询问将把他/她的生日视为今天.
我的第二个查询也可以这样简化:
SELECT
emp_firstname AS first_name,
emp_lastname AS last_name,
emp_birthday AS dob
FROM
emp
WHERE
(MONTH(emp_birthday)=MONTH(CURDATE())
AND DAY(emp_birthday)=DAY(CURDATE()))
OR (DAY(LAST_DAY(emp_birthday))=29
AND DAY(emp_birthday)=29
AND DAY(LAST_DAY(CURDATE()))=28);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |