作者blReader (野火)
站内Database
标题[SQL ] 请问 where date 条件怎麽下比较好呢?
时间Tue Dec 4 10:57:06 2012
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
1F:推 ClubT:AND substr(sb_call_time,1,'2012/12/4')>0 试试看行不行? 12/04 11:39
错误讯息是 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)