[SQL ] 請問 where date 條件怎麼下比較好呢?
Oracle
查詢 A01 在 2012/12/4 當天是否有登錄 顧客 C1213 的 123 分店資料?
黃色為已知條件
以下為登錄記錄 ( 2012/12/4 有 1 筆資料 )
-----------------------------------------------------------------------
varchar2 date varchar2 number varchar2 varchar2
單號 登錄日期時間 客戶編號 營業點 客服人員 處理人員
ACC0001 2012/12/4 上午 09:31:31 C1213 123 A01
-----------------------------------------------------------------------
原本是這樣下的, 但其實不應該用 LIKE, 可是我用其他寫法都撈不到這筆資料
SELECT *
FROM call_table
WHERE customer_id = 'C1213'
AND shop_key = 123
AND sb_call_time LIKE TO_DATE('2012/12/4', 'yyyy/mm/dd')
AND (hd_emp_id = 'A01' OR mt_emp_id = 'A01')
----------------------------------------------------------------------
下列是先將欄位 Type 轉成 date 來比對, 可是這段撈不到資料
SELECT *
FROM call_table
WHERE customer_id = 'C1213'
AND shop_key = 123
AND TO_DATE(sb_call_time, 'yyyy/mm/dd') = TO_DATE('2012/12/4', 'yyyy/mm/dd')
AND ( hd_emp_id = 'A01' OR mt_emp_id = 'A01' )
請問這段查詢要怎麼修改比較好呢? 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.164.121
推
12/04 11:39, , 1F
12/04 11:39, 1F
錯誤訊息是 invalid relational operator
可能的原因是 date 與 char 型別不同
目前此段日期查詢的處理方法是
1. 在前端寫一段日期格式轉換函式(可省略) 將 2012/12/4 轉為 2012/12/04
2. where條件將欄位 date 型別轉為 char型別再比對
AND TO_CHAR(sb_call_time, 'yyyy/mm/dd') = '2012/12/04'
剛剛試作出來了
謝謝ClubT提供靈感 xd
※ 編輯: blReader 來自: 210.59.164.121 (12/04 12:01)