我想选择那些出生日期与当前系统日期相匹配的人。
我的SQL查询是:
select testtable.task
from testtable
where testtable.dates like (select SUBSTRING(CONVERT(varchar(10), GETDATE(), 10), 1, 5))我是用Server编写的。
问题是它没有返回任何数据,但是内部子查询运行得非常好。
请指定日期作为字符串存储和日期以日期类型存储的情况下的解决方案。
提前感谢
发布于 2015-10-11 05:06:42
假设testtable.dates是Date DateTime或DateTime2类型,您可以简单地使用以下查询:
select testtable.task
from testtable
where month(testtable.dates) = month(getdate())
and day(testtable.dates) = day(getdate())发布于 2021-10-20 14:31:29
接受的解决方案不考虑跃年,因此,如果一个人的生日是2020年-02-29,他将只得到通知每4年。
此查询返回非闰年,即02/29生日,即02/28生日,与大多数国家和社会媒体一样。
MariaDB/MySQL:
SELECT
*
FROM
Employees
WHERE
CASE
WHEN MONTH(CURDATE()) = 2 AND DAY(CURDATE()) = 28
AND DAY(ADDDATE(CURDATE(), 1)) != 29
THEN MONTH(Employees.DateOfBirth) = 2 AND
DAY(Employees.DateOfBirth) IN (28, 29)
ELSE MONTH(Employees.DateOfBirth) = MONTH(CURDATE()) AND
DAY(Employees.DateOfBirth) = DAY(CURDATE())
ENDMsSQL:
SELECT
*
FROM
Employees
WHERE
(MONTH(GETDATE()) = 2 AND DAY(GETDATE()) = 28 AND DAY(DATEADD(day, 1, GETDATE())) != 29) AND
(MONTH(Employees.DateOfBirth) = 2 AND DAY(Employees.DateOfBirth) IN (28, 29))
OR
NOT (MONTH(GETDATE()) = 2 AND DAY(GETDATE()) = 28 AND DAY(DATEADD(day, 1, GETDATE())) != 29) AND
(MONTH(Employees.DateOfBirth) = MONTH(GETDATE()) AND DAY(Employees.DateOfBirth) = DAY(GETDATE()))https://stackoverflow.com/questions/33061661
复制相似问题