计算结束月/日的年份?

时间:2010-05-13 03:25:33

标签: mysql date

假设:

  • 开始年份
  • 开始月份&开始日
  • 结束月份&结束日

如果日期落在开始日期和结束日期之间,哪条SQL语句会导致TRUE?问题在于找到结束年份,以便start_date 获得end_date

3 个答案:

答案 0 :(得分:0)

也许将日期转换为UNIX时间戳?然后它将是简单的小于或大于整数算术。

答案 1 :(得分:0)

你真的需要真/假值,还是只能选择SELECT?假设$ date包含您以'yyyy-mm-dd'格式查找的日期:

SELECT * FROM mytable WHERE $date > start_date AND date < end_date;

将年份放在一个单独的领域也有效,但看起来更丑陋并且可能会杀死表现:

SELECT * FROM mytable WHERE $date > CONCAT(year, '-', start_date) AND
  $date < CONCAT(year, '-', end_date);

并且处理结束&lt;开始案例:

SELECT * FROM mytable WHERE $date > CONCAT(year, '-', start_date) AND $date <
  IF(start_date < end_date,
     CONCAT(year, '-', end_date),
     DATE_ADD(CONCAT(year, '-', end_date), INTERVAL 1 YEAR));

答案 2 :(得分:0)

计算结束年份的一种方法(以便推导出end_date):

end_year = start_year +
  greatest( -1 *
    sign(
      datediff(
        date(
          concat_ws('-', year, end_month, end_day )
        ),
        date(
          concat_ws('-', year, start_month, start_day )
        )
      )
    ), 0
  )