从oracle数据库中获取日期而不从列中获取时间

Posted

技术标签:

【中文标题】从oracle数据库中获取日期而不从列中获取时间【英文标题】:getting date from oracle database without time from a column 【发布时间】:2014-06-20 13:31:33 【问题描述】:

我想从日期格式为08-MAR-14 03.52.17.000000000 PM 的数据库中获取详细信息。我知道它可以获取日期

SELECT * FROM Table WHERE somecol >= '2011-01-01' AND somecol <= '2011-01-30' 

在这个数据中我也有时间,怎么可能只获得日期,我正在使用 java 连接 oracle 和 html5+java script+j 查询。

【问题讨论】:

使用DATE()函数提取年-月-日部分。例如。 DATE(somecol) &gt; '2011-01-01' ResultSet.getDate() 只会不包括数据的时间部分。 docs.oracle.com/javase/7/docs/api/java/sql/… 'somecol' 的数据类型是什么? 听起来你也在这个日期应用条件。您可以将 trunc(col_date) 用于您的条件,使用 to_char(col_date, 'YYYY-MM-DD') 用于选择语句中列值的显示方式。 Oracle: Similar to sysdate but returning only time and only date的可能重复 【参考方案1】:

使用 to_char 函数。

Refer this link

【讨论】:

【参考方案2】:

我假设 somecol 包含实际存储为格式为 VARCHAR2 文本字符串的日期字段:

08-MAR-14 03.52.17.000000000 PM

如果是这种情况,这是您的查询:

select * from table 
  where to_date(substr(somecol, 0, 9)) >= '01-JAN-11'
    and to_date(substr(somecol, 0, 9)) <= '30-JAN-11';

这样做的问题是 Oracle 需要在每一行上执行 substr 和 to_date 才能知道要带回哪些。如果您需要在具有大量行的表上频繁运行此操作,则会影响您的性能。您可以在 'to_date(substr(somecol, 0, 9))' 上创建基于函数的索引,以减少这种影响。

【讨论】:

以上是关于从oracle数据库中获取日期而不从列中获取时间的主要内容,如果未能解决你的问题,请参考以下文章

使用SqlDataReader的C#我想从列中获取日期时间值

根据 Pandas 中另一列中的索引从列中获取数据

火花数据集:如何从列中获取唯一值的出现次数

如何从列中获取最大年份并保留其余部分?

Rails:如何从列中获取唯一值

选择总和列,然后从列中获取最小值