php - 如果日期为空,如何调整年份

标签 php mysql sql database

我有一个数据库,其中存储了事件日记(与 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/

相关文章:

php - php和mysql给用户按小时加分的解决方法?

javascript - 我正在学习 php 和 mysql,我正在使用数组创建动态表单。抛出空查询警告

sql - Providex 查询性能

sql - 计算没有重叠的总时间

javascript - 将 JSON 数据输出到 Chart.js 标签和数据

javascript - 如何反序列化 node.js 中的 PHP session ?

Javascript onchange(this.value,that.value)不适用于ipad

sql - MySQL 5 之前无法识别?

mysql - 如何解决此错误 "MySQL Error: 1109 (Unknown table ' table_name' in MULTI DELETE)”?

php - 当我只想输出一行时,MYSQL/PHP 输出整个表