2011-09-22 73 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