2011-09-22 3 views
1

MySQL에서 간격으로 캐스팅 할 수 있습니까?간격으로 mysql 캐스팅

나는이 같은 간격으로 쿼리에서 값을 평가할 : user.expiry_interval이 'INTERVAL 1 WEEK'그

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 같은 또는 뭔가

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

이고, 사람이 읽을 수있는 "지속 기간"문자열을 정수로 변환하는 keyword입니다. 따라서 "casting to INTERVAL"은 의미가 없습니다.

"간격"입력이 가변적 인 경우이 작업은 가능하지만 "SELECT * FROM tbl" 문자열을 쿼리 식에 "캐스팅"할 수있는 것 이상으로 문자열에서 전체를 가져올 수 없습니다. 숫자 피연산자에 대해 변수를 사용할 수 있지만 (아래 참조) 나는 그렇게 생각합니다.

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

당신은 당신보다 더 강한 논리를 원하는 경우 CASE에 의존해야합니다. 또는 ... 처음부터 정수 기간을 저장하십시오.

+0

간단하고 우수한! – Imdad