mysql은 문자열 'now()'를 datetime으로 취급합니까?
함수 'now()'를 문자열로 포함하도록 잘못 구성된 쿼리가 있습니다.
select Listing.id,Listing.reactivated FROM `listings` AS Listing WHERE Listing.reactivated < 'now()';
그러나 실제로는 이 쿼리는 mysql 5.5에서 올바른 결과를 반환할 수 있습니다.
| 26662 | 2007-06-04 21:42:51 |
| 26663 | 2007-06-04 21:46:34 |
실제로 'now'나 'curdate'와 같이 괄호가 없어도 여러 날짜 함수가 작동하지만 단순하게 'select 'now'();는 문자열을 반환합니다.
실제로 Mysql을 MariaDB 10.1로 업그레이드 했을 때 이 사실을 알게 되었습니다.Mysql은 동작을 정지하고 위 쿼리의 결과는 null 집합이며 경고입니다.
| Warning | 1292 | Incorrect datetime value: 'NOW()' |
쿼리를 수정해야 한다는 것은 알고 있습니다만, 이 배경, 변경 시기, 동작 설정 가능 여부 등을 묻고 싶습니다.
따옴표 사용 안 함:'NOW()'
간단히 말하면NOW()
.
전자는 유효한 날짜/시간이 아닌 문자열입니다.(도 마찬가지입니다.'NOW'
그리고.'XYZ'
.)
인수 중 하나가 다음과 같은 경우
TIMESTAMP
또는DATETIME
컬럼과 다른 인수는 상수입니다.상수는 비교를 수행하기 전에 타임스탬프로 변환됩니다.
하지만 이 경우에는 그런 일이 일어나지 않는 것 같기 때문에 버그일 수도 있습니다.이 장치가 이 모든 것을DATETIME
스트링과 비교해서 상수와 비교합니다.따라서 현재 날짜/시간이2016-07-19 15:13:06
다음과 같은 결과를 얻을 수 있습니다.
SELECT '2016-07-19 15:13:06' < 'now()';
조합 시퀀스의 문자보다 숫자가 작기 때문에 이 값은 반환됩니다.1
.
나는 다른 현을 시험해 보고 이 결론에 도달했다.
SELECT NOW() < '300';
이것도 반환됩니다.1
. 단, 다음과 같이 변경할 경우:
SELECT NOW() < '100', NOW() < '!';
결과는0
.
언급URL : https://stackoverflow.com/questions/38466893/mysql-treats-the-string-now-as-datetime
'programing' 카테고리의 다른 글
JavaScript 관련 배열에서 개체를 삭제하려면 어떻게 해야 합니까? (0) | 2022.09.23 |
---|---|
Vuex 및 Electron의 상태를 새 창으로 전달합니다. (0) | 2022.09.23 |
실시간 MySQL 쿼리를 보려면 어떻게 해야 합니까? (0) | 2022.09.23 |
이 메모리 누전 문제를 해결하려면 어떻게 해야 하나요? (0) | 2022.09.23 |
Windows 10에서 Composer를 업데이트하는 방법 (0) | 2022.09.14 |