我有一个数据库,其中存储了事件日记(与 Facebook 的工作方式非常相似),这些事件可以是针对特定的单个日期,也可以是每年重复发生的。例如,我可能在2013年6月1日举行婚礼,并在每年5月4日举行生日。我正在尝试提取明年发生的所有事件的列表,按发生的时间顺序排列。
id u_id title event_day event_month event_year
1 1 Wedding 22 02 2013
2 1 Jan Birthday 1 1
3 1 May Birthday 04 5
使用此查询,我可以填写当前年份,但是如果已经发生了某个事件(例如上面数据中的“一月生日”),则需要是当前年份加一个:
SELECT title, IF(event_year = '', YEAR(CURDATE()), event_year) AS ev_year,
event_day, event_month
FROM `events`
返回:
title ev_year event_day event_month
Wedding 2013 22 02
Jan Birthday 2014 1 1
May Birthday 2014 04 5
谢谢
最佳答案
我建议存储在单个日期时间列中,并仅标记重复发生的事件 - 您仍然可以计算它们。作为一个好处,您甚至可以知道人们的年龄:)
但是对于您当前的表:
SELECT title, IF(event_year = '',
IF(event_day < DAY(CURDATE()) AND event_month = MONTH(CURDATE()) OR event_month <
MONTH(CURDATE()), YEAR(CURDATE())+1, YEAR(CURDATE())), event_year) AS ev_year,
event_day, event_month
FROM `events`
关于php - 如果日期为空,如何调整年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21557516/