2011-09-22 37 views
1

是否有可能在MySQL中投射爲間隔?mysql作爲間隔投射

我要評估來自查詢的值作爲間隔,這樣的:

select DATE_SUB(NOW(),CAST(user.expiry_interval AS interval)) 

其中user.expiry_interval是 '間隔1周' 或類似的東西

select DATE_SUB(NOW(),CAST('INTERVAL 1 week' AS INTERVAL)) 
+0

可能的重複[如何使用字符串/列值作爲MySQL日期間隔常量(DAY,MONTH ...)?](http://stackoverflow.com/questions/888971/how-to-use- a-string-column-value-as-a-mysql-date-interval-constant-day-month) –

+0

你鏈接到的問題很有幫助,謝謝。 – PeterL

回答

3

INTERVAL is not a data type,但一個keyword將可讀的「持續時間」字符串轉換爲整數。因此,「鑄造到INTERVAL」是沒有意義的。

如果您的「間隔」輸入是可變的,那麼這可以工作,但不能從字符串中取出整個東西,而不能將字符串"SELECT * FROM tbl"「投」到查詢表達式中。你可以爲數字操作數使用一個變量(見下面),但我認爲就是這樣。

SELECT DATE_SUB(NOW(), INTERVAL `x` DAY) FROM `tbl`; 

如果你想要的邏輯比這更強大,你將不得不求助於CASE。或者...首先存儲整數持續時間。

+0

簡單而優秀! – Imdad