如何通过手动传递日期从表中提取明智的数据计数
我的代码:
select count(*),id,time_stamp
from tab
where trunc(time_stamp)='12-11-2018'
group by id,time_stamp.
出现类似not a valid month
答案 0 :(得分:1)
您必须使用to_date函数将varchar转换为日期
select count(*),id,time_stamp
from tab
where trunc(time_stamp)=to_date('12-11-2018','dd-mm-yyyy')
group by id,time_stamp.
TO_DATE将CHAR,VARCHAR2,NCHAR或NVARCHAR2数据类型的char转换为DATE数据类型的值。
答案 1 :(得分:1)
与日期比较时,您不能简单地使用任何格式的日期字符串,它必须匹配NLS_DATE_FORMAT
或必须使用TO_DATE
进行转换。
此外,最好不要直接在TRUNC
中的日期列上使用where clause
进行比较。如果索引存在于列time_stamp
上,它将变慢并且可能无法利用索引(除非您在TRUNC(time_stamp)
上具有基于函数的索引。将简单的DATE/TIMESTAMP
文字与>=
一起使用&<
条件。
select count(*),id,time_stamp
from tab
where time_stamp >= DATE '2018-11-12' AND time_stamp < DATE '2018-11-12' + 1
group by id,time_stamp