如何在Oracle中的运行时将日期转换为另一种格式?

时间:2015-08-06 16:20:38

标签: oracle date

我有来自用户输入的日期字符串,格式为DD/MM/YYYY,我需要将其与DD-MON-YY格式的数据库中的日期列进行匹配。

示例输入是01/01/2015和我们数据库中的示例日期列:

SELECT MAX(creation_date) FROM orders;

MAX(creation_date)
------------------
06-AUG-15

我需要以下列格式查询:

SELECT * FROM orders WHERE creation_date = 01/01/2015

并以某种方式转换为01-JAN-15

是否可以使用一些内置的Oracle函数?

3 个答案:

答案 0 :(得分:1)

如果表格中的列是日期格式

,请使用to_date

http://www.techonthenet.com/oracle/functions/to_date.php

答案 1 :(得分:0)

to_char允许您在SQL语句中指定不同的格式。

示例:to_char(sysdate,'DD-MON-YYYY')将显示今天06-AUG-2015的日期。

TO_CHAR

答案 2 :(得分:0)

使用to_date将日期列与日期字符串进行比较,但要小心这样做,因为您的日期列可能包含从表中选择时未显示的时间组件。

如果日期列中没有索引,则可以在比较期间截断它:

SELECT * FROM orders WHERE TRUNC(creation_date) = TO_DATE('01/01/2015','mm/dd/yyyy');

如果您的日期列中有索引但您仍想使用它,请使用远程比较:

SELECT * FROM orders
 WHERE creation_date >= TO_DATE('01/01/2015','mm/dd/yyyy')
   and creation_date  < TO_DATE('01/01/2015','mm/dd/yyyy')+1;