2014-03-27 31 views
0

我有地方像這樣別名經常重複的表達

placeid offset1 effectivetill1   offset2 effectivetill2 
    1   3600  2014-01-05 10:23:13 0  2014-07-05 10:23:13 
    2   -7200 2014-01-05 10:23:13 -3600 2014-07-05 10:23:13 

表我運行需要與本地時間,每個地方的工作有非常大的查詢。因此,如果 「TS」是UTC時間戳現在,和「日期時間」是當前UTC日期時間,我用下面的公式來查找本地時間:

IF(effectivetill1='0000-00-00' OR effectivetill1>=datetime, ts+offset1, 
    IF(effectivetill2>=datetime, ts+offset2, 0) 
) 

所以我需要重複上述幾個代碼在我的查詢中這是愚蠢的計算和代碼可讀性。

有無論如何,我可以在我的查詢中定義一次localtime,然後多次使用它?

謝謝。

+0

你得到了什麼樣的錯誤.. – jmail

+0

我沒有得到任何錯誤。我只是想避免在我的查詢中重複上述代碼。 – user3163577

回答

1

假設你會使用相同的變量在每一行的水平,

嘗試進行:

@ts_with_offset:=IF(effectivetill1 = '0000-00-00' OR 
        effectivetill1 >= datetime, 
        ts + offset1, 
        IF(effectivetill2 >= datetime, ts + offset2, 0) 
       ) as name_of_this_expression 

,並使用變量@ts_with_offset獲取基於該值或類似的東西其他值。

if (@ts_with_offset >= now(), true, false) as matched 

需要注意的是,在查詢中使用組函數時,使用變量的方式是行不通的。