通过手动传递日期以日期方式提取日期

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 传递值(反应)

仅从控制器通过DateTime对象传递日期。尝试多种方式绑定时间

通过匹配字符串中的日期格式使用Java提取日期

如何减去两个angularjs日期变量

从 jsonwebtoken 中提取过期日期时间

访问:从表单传递参数到查询