2010-11-05 31 views
0

我有以下問題:間隔由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,所以這些查詢只是作爲一個例子。我真的被困在這裏,所以只是暗示或線索將不勝感激。

+0

同時我遇到了第一個問題,解決了選擇u_date - INTERVAL 1天+ INTERVAL 1個月作爲C從mod_users WHERE u_id = 1 – Tim 2010-11-05 10:07:50

回答

1

在MySQL中,您可以直接將時間間隔添加到日期時間字段,因此u_date + INTERVAL 1 MONTH - INTERVAL 1 DAY應該正常工作。

+0

我找到了。幾分鐘前看到我的評論:) – Tim 2010-11-05 10:12:01