从当前日期之后的startdate开始的间隔

时间:2010-11-05 09:54:32

标签: php mysql datetime

我有以下问题:

这是我的创建表:

CREATE TABLE `mod_users` (
  `u_id` int(11) NOT NULL auto_increment,
  `u_date` datetime NOT NULL,
  `u_type` int(1) NOT NULL default '',
  `u_adddate` datetime NOT NULL,
  PRIMARY KEY  (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

u_type包含一个int(doh),表示一种间隔类型。

1 = one week
2 = two weeks
3 = one month
4 = one year

我想选择当前日期之后的第一个日期,该日期属于u_type的间隔 - 一天(因此一周变为6天,2周变为13天,一个月变为:1个月 - 1天,一个年份变为:一年-1天),开头是u_date。听起来很混乱。

一个例子: 如果用户的类型1(一周)和u_date 2010-11-01 00:00:00(四天前)我希望在一周后第一次出现。在这种情况下'SELECT DATE_ADD(u_date,INTERVAL 6 DAYS) from mod_users WHERE u_id = 1';(给出2010-11-07 00:00:00)我如何为u_type 3或4执行此操作?像'SELECT DATE_ADD(u_date,INTERVAL 1 MONTH - 1 DAYS) from mod_users WHERE u_id = 1';这样的东西?这不是有效的查询。

此外,如果当前日期是2010-11-08我想在此日期之后第一次出现。在这种情况下2010-11-14。 00:00:00。这会拒绝此查询'SELECT DATE_ADD(u_date,INTERVAL 6 DAYS) from mod_users WHERE u_id = 1';因为此查询的6天不是正确的时间间隔。

希望你们中的一些人可以提供帮助吗?我可以使用php和mysql,所以这些查询只是用作一个例子。我真的被困在这里,所以只是提示或线索将不胜感激。

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以直接将间隔添加到日期时间字段,因此u_date + INTERVAL 1 MONTH - INTERVAL 1 DAY应该可以正常工作。