通过手动传递日期以日期方式提取日期
Posted
技术标签:
【中文标题】通过手动传递日期以日期方式提取日期【英文标题】:Pull date in date wise by passing date manually 【发布时间】:2018-11-12 11:19:50 【问题描述】:如何通过手动传递日期从表中提取数据,
我的代码:
select count(*),id,time_stamp
from tab
where trunc(time_stamp)='12-11-2018'
group by id,time_stamp.
收到类似not a valid month
的错误
【问题讨论】:
【参考方案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 数据类型的值。
【讨论】:
【参考方案2】:在与日期进行比较时,您不能简单地使用任何格式的日期字符串,它必须与 NLS_DATE_FORMAT
匹配,或者您必须使用 TO_DATE
对其进行转换。
此外,不要直接在where clause
中的日期列上使用TRUNC
进行比较。如果索引存在于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
【讨论】:
以上是关于通过手动传递日期以日期方式提取日期的主要内容,如果未能解决你的问题,请参考以下文章
Ant 设计日期和时间选择器不通过 Formik 传递值(反应)