ฉันเพิ่งเจอสิ่งที่ฉันคิดว่าน่าจะเป็นแมลง Coldfusion
ฉันมีคำถาม:
<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 คือออบเจ็กต์ Coldfusion dateTime CallTime เป็นคอลัมน์ dateTime ใน MariaDB
cf_sql_date
(วันที่เท่านั้น) และcf_sql_timestamp
(วันที่และเวลา) อย่างไรก็ตาม นิพจน์ที่ถูกต้องจะขึ้นอยู่กับค่าที่คุณกำลังเปรียบเทียบ ค่าcallTime
เป็นเพียงวันที่หรือมีวันที่และเวลาหรือไม่ หากมีเพียงวันที่ การสลับไปที่cf_sql_date
จะช่วยได้ มิฉะนั้นคุณจะต้องใช้สำนวนอื่น - person Leigh   schedule 03.02.2014callTime
และ c) ผลลัพธ์ที่ดีเมื่อคุณ ถ่ายโอนไปยังฐานข้อมูล - person Leigh   schedule 04.02.2014callTime
คือวันที่และเวลา ถูกต้องไหม? - person Leigh   schedule 04.02.2014a,b and c
คือการจัดหา sscce ซึ่งเราสามารถดำเนินการได้อย่างอิสระ และจำลองปัญหาของคุณ มีสาเหตุที่เป็นไปได้หลายประการสำหรับผลลัพธ์ที่คุณได้รับจาก cfquery แต่เนื่องจากเราไม่ทราบค่าของพารามิเตอร์ของคุณด้วยซ้ำ... เราจึงได้แต่เดาได้ว่าเหตุผลนั้นคืออะไร ทำให้รู้สึก? - person Leigh   schedule 04.02.2014