2012-03-21 30 views
0

我只是想用mysql顯示**開始或結束的錯誤消息**使用MySQL的

enter image description here

這是日期值我msg列中顯示開始或結束錯誤消息日期值我的查詢

SELECT `id`,`name`,`start_date`,`end_date` FROM teams 
WHERE sub_cat_id = '84' AND SYSDATE() > `start_date` AND SYSDATE() < `end_date` ORDER BY `id` DESC; 

我對於顯示​​錯誤消息有點迷惑,那麼如何跟蹤開始和結束日期消息?

enter image description here

如果系統日期比開始日期的消息將顯示開始或結束日期同一場景下的消息將顯示

回答

3

嘗試:

SELECT `id`,`name`,`start_date`,`end_date`, '' `error_message` 
FROM teams 
WHERE sub_cat_id = '84' AND SYSDATE() > `start_date` AND SYSDATE() < `end_date` 
UNION ALL 
SELECT NULL `id`, NULL `name`, NULL `start_date`, NULL `end_date`, 
     CASE WHEN MIN(`start_date`)<SYSDATE() THEN 'Start' 
      WHEN MAX(`end_date`)>SYSDATE() THEN 'End' 
      WHEN COUNT(*)=0 THEN 'SubCat' 
     END `error_message` 
FROM teams 
WHERE sub_cat_id = '84' AND 
     NOT EXISTS (SELECT 1 FROM teams 
        WHERE sub_cat_id = '84' AND SYSDATE() > `start_date` AND SYSDATE() < `end_date`) 
ORDER BY `id` DESC; 
+0

Thankx分享你的經驗 – 2012-03-21 11:28:03

0

三江源馬克·班尼斯特對我的幫助

SELECT `id`,`name`,`start_date`,`end_date`, 
    CASE WHEN SYSDATE() < `start_date` THEN 'WAITING'   
      WHEN SYSDATE() >= `start_date` AND SYSDATE() <= `end_date` THEN 'START' 
      WHEN SYSDATE() >= `end_date` THEN 'END' 
    END `status` 
FROM teams 
WHERE sub_cat_id = '84'