我有以下問題:間隔由STARTDATE當前日期後
這是我創建表:
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的間隔在當前日期後的第一個日期 - 一天(所以1周變爲6天,2周變成13天,1個月變爲: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,所以這些查詢只是作爲一個例子。我真的被困在這裏,所以只是暗示或線索將不勝感激。
同時我遇到了第一個問題,解決了選擇u_date - INTERVAL 1天+ INTERVAL 1個月作爲C從mod_users WHERE u_id = 1 – Tim 2010-11-05 10:07:50