我有以下问题:
这是我的创建表:
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天不是正确的时间间隔。
答案 0 :(得分:1)
在MySQL中,您可以直接将间隔添加到日期时间字段,因此u_date + INTERVAL 1 MONTH - INTERVAL 1 DAY
应该可以正常工作。