2011-05-15 71 views
1

我有一個非常複雜的MySQL查詢有問題,但我已經將問題縮小到了下面的SQL。問題是MySQL日期函數(WEEK,YEAR等)不接受存儲在用戶變量中的日期時間。在用戶變量中存儲mysql日期時間

SELECT 
@test := datetime 
,datetime 
FROM `agenda` 
WHERE YEAR(@test) = 2011 

這並沒有給我任何的結果,但是,下面的SQL給我的結果:

SELECT 
@test := datetime 
,datetime 
FROM `agenda` 
WHERE YEAR(datetime) = 2011 

(日期時間是在議程表中的字段名。)

什麼問題在這裏?

回答

1

在第一個查詢中,您試圖根據本身引用@test值的WHERE子句將@test設置爲等於datetime字段值。

除非@test有前面的值,否則你不能指望它產生任何有意義的結果。

+0

因此,如果我正確地得到它,首先評估WHERE部分,然後設置@test變量? – Youri 2011-05-15 21:54:44

+0

@Youri - 如果不確定與WHERE子句匹配的特定行,則變量不能設置爲任何值,所以是 - 在設置變量之前需要對WHERE進行評估。 – 2011-05-15 21:57:50

+0

謝謝你的回答! – Youri 2011-05-15 21:58:52