만약 필드가(여기서는 예로 GD_SALE_ENDDT로 하겠다) varchar로 되어있는데 날짜형식으로 데이터를 저장하고 있다면

select의 경우 다음과 같이

update t_goods set WEIGHT=54, UPDATE_DT=UPDATE_DT where GD_SALE_ENDDT > CURRENT_TIMESTAMP()

로 해도 자동으로 현재시간이 varchar로 형변환 되서 비교하게 된다.

 

 

 

하지만 update의 경우

select wid, GD_SEQ, GD_NAME, WEIGHT, GD_SALE_ENDDT, UPDATE_DT from t_goods where GD_SALE_ENDDT > CURRENT_TIMESTAMP() 

이러식으로 하면

Data truncation: Truncated incorrect datetime value 이런 오류가 발생한다. 따라서

update t_goods set WEIGHT=54, UPDATE_DT=UPDATE_DT where GD_SALE_ENDDT > DATE_FORMAT(CURRENT_TIMESTAMP(), '%Y%m%d%H%i%s');

와 같이 DATA_FORMAT을 이용하여 명시적으로 형변환을 해줘야 오류없이 비교가 된다.

 

 

 

*보통 날짜 포맷에서

MM(월) mm(분) 으로 월과 분을 구별하는데

쿼리문에서는 %m(월), %i(분)로 구별한다.

+ Recent posts