2013-10-14 128 views
-5

我有以下MySQL的代碼行:正確的MySQL語法WEEK

IF SELECT WEEKDAY(NOW()) > 3 THEN 
    SELECT WEEK(NOW(),1) 
ELSE 
    SELECT WEEK(NOW()) 
END IF; 

而得到錯誤。

我需要的是讓MySQL能夠在今年這個星期如果小於或等於3

只是沒有得到語法就在這裏拉下週,由週數,如果DOW > 3和。

+7

「出錯了。」 ---我們應該猜測你的錯誤嗎? – zerkms

+1

@zerkms:垃圾,我們應該知道所有的錯誤和他們可能的背景。 ;) –

+0

@Andriy男:阿門:-) – zerkms

回答

0
SELECT (CASE WHEN WEEKDAY(NOW()) > 3 THEN 
    WEEK(NOW(),1) 
ELSE 
    WEEK(NOW()) END) 
AS result; 
0

WEEK函數的第二個參數是指導其如何計算週數,即什麼樣的一週應該算是第一個,以及它應該開始什麼工作日。

因此,針對您的特定問題玩弄第二個參數是沒有意義的。如果你想通過一個基於一些條件增加當前週數,這樣做,即添加1WEEK返回值:使用CASE表達

  • SELECT WEEK(NOW()) + CASE WHEN WEEKDAY(NOW()) > 3 THEN 1 ELSE 0 END 
    
  • 使用IF功能(不是聲明):

    SELECT WEEK(NOW()) + IF(WEEKDAY(NOW()) > 3, 1, 0) 
    

您也可以使用,MySQL的布爾結果轉換爲整數的事實(0 false,1 true)時自動在適當的範圍內,等的運算之一,所以這也將工作:

SELECT WEEK(NOW()) + (WEEKDAY(NOW()) > 3) 

可以說更優雅,但也可能更隱晦。

聲明:我不知道WEEK(NOW())會比WEEK(NOW(), 1)或其他任何變化更適合您。您應該檢查the function's manual以幫助確定第二個參數使用哪個值(或者是否指定它),並堅持在所有查詢中一致地使用它。

+0

感謝信息傢伙,這讓我走了! – OldManRiver