我有以下MySQL的代碼行:正確的MySQL語法WEEK
IF SELECT WEEKDAY(NOW()) > 3 THEN
SELECT WEEK(NOW(),1)
ELSE
SELECT WEEK(NOW())
END IF;
而得到錯誤。
我需要的是讓MySQL能夠在今年這個星期如果小於或等於3
只是沒有得到語法就在這裏拉下週,由週數,如果DOW > 3
和。
我有以下MySQL的代碼行:正確的MySQL語法WEEK
IF SELECT WEEKDAY(NOW()) > 3 THEN
SELECT WEEK(NOW(),1)
ELSE
SELECT WEEK(NOW())
END IF;
而得到錯誤。
我需要的是讓MySQL能夠在今年這個星期如果小於或等於3
只是沒有得到語法就在這裏拉下週,由週數,如果DOW > 3
和。
SELECT (CASE WHEN WEEKDAY(NOW()) > 3 THEN
WEEK(NOW(),1)
ELSE
WEEK(NOW()) END)
AS result;
的WEEK
函數的第二個參數是指導其如何計算週數,即什麼樣的一週應該算是第一個,以及它應該開始什麼工作日。
因此,針對您的特定問題玩弄第二個參數是沒有意義的。如果你想通過一個基於一些條件增加當前週數,這樣做,即添加1
由WEEK
返回值:使用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以幫助確定第二個參數使用哪個值(或者是否指定它),並堅持在所有查詢中一致地使用它。
感謝信息傢伙,這讓我走了! – OldManRiver
「出錯了。」 ---我們應該猜測你的錯誤嗎? – zerkms
@zerkms:垃圾,我們應該知道所有的錯誤和他們可能的背景。 ;) –
@Andriy男:阿門:-) – zerkms