Я только что наткнулся на то, что, как я думаю, должно быть ошибкой холодного синтеза.
У меня есть запрос:
<cfquery name="qryTest" datasource="#This.ds#">
SELECT *
FROM MyLovelyTable
WHERE 1=1
AND phoneNumber = <cfqueryparam cfsqltype="cf_sql_bigint" value="#variables.phoneNumber#">
AND callTime between <cfqueryparam cfsqltype="cf_sql_date" value="#variables.startDate#"> AND <cfqueryparam cfsqltype="cf_sql_date" value="#variables.endDate#">
ORDER BY phoneID
</cfquery>
Проблема в том, что если я прохожу через вторую переменную даты, ничего не возвращается. Если я скопирую префикс запроса SQL и параметры и запросю базу данных напрямую, результаты будут возвращены. Просто когда он проходит через CF, он не работает. Если я удалю второй параметр даты, он будет работать нормально. И если я преобразую второй параметр даты в строку, он будет работать.
Я попытался поменять значение второго параметра на now(), что тоже не работает.
Насколько я могу судить, проблема в том, что второй параметр даты является типом даты.
Я делаю что-то явно неправильное, о чем я не знаю?
Переменные startDate и endDate являются объектами dateTime для coldfusion. CallTime — это столбец dateTime в базе данных MariaDB.
cf_sql_date
(только дата) иcf_sql_timestamp
(дата и время). Однако правильное выражение зависит от того, какие значения вы сравниваете. Являются ли значенияcallTime
просто датами или они содержат дату и время? Если они содержат только даты, то переключение наcf_sql_date
поможет. В противном случае вам понадобится другое выражение. - person Leigh   schedule 03.02.2014callTime
и в) хорошие результаты при переносе в базу данных - person Leigh   schedule 04.02.2014callTime
— это дата и время. Это правильно? - person Leigh   schedule 04.02.2014a,b and c
состоит в том, чтобы предоставить sscce, который мы можем запустить независимо и воспроизвести вашу проблему. Есть несколько возможных причин результатов, которые вы получаете от cfquery, но поскольку мы даже не знаем значений ваших параметров... мы можем только догадываться, что это может быть за причина. Есть смысл? - person Leigh   schedule 04.02.2014