从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) > '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数据库中获取日期而不从列中获取时间的主要内容,如果未能解决你的问题,请参考以下文章