我已经看到了一些类似于我的问题的答案,但我无法让它们起作用。我的查询中有几个日期字段,返回日期和时间,如7/1/2014 12:00:00 AM。有没有办法让字段显示7/1/2014?
SELECT DISTINCT
C.RECEIPTDATE,
(I.CLIENTID ||' - '||PO.CLIENTNAME) AS CLIENT,
D.INVOICEID,
D.SVCFROMDATE,
D.SVCTODATE,
D.SVCCODE
FROM M_EQP_ORDERS
WHERE.....
我基本上希望将两个日期字段缩减为较短的日期格式减去时间。
提前致谢!
答案 0 :(得分:6)
使用to_char函数:
SELECT DISTINCT
to_char(C.RECEIPTDATE,'DD/MM/YYYY'),
(I.CLIENTID ||' - '||PO.CLIENTNAME) AS CLIENT,
D.INVOICEID,
D.SVCFROMDATE,
D.SVCTODATE,
D.SVCCODE
FROM M_EQP_ORDERS
WHERE.....
答案 1 :(得分:4)
只需使用TRUNC功能。
SELECT DISTINCT
TRUNC(C.RECEIPTDATE),
(I.CLIENTID ||' - '||PO.CLIENTNAME) AS CLIENT,
D.INVOICEID,
TRUNC(D.SVCFROMDATE),
TRUNC(D.SVCTODATE),
D.SVCCODE
FROM M_EQP_ORDERS
WHERE.....
答案 2 :(得分:1)
试试这个:
SQL> select to_char(sysdate, 'YYYY/MM/DD') dateonly, sysdate datetime from dual;
DATEONLY DATETIME
---------- -------------------
2014/09/26 2014-09-26 15:41:03
答案 3 :(得分:1)
DEPENDS 。
如果列是DATE
数据类型,那么,正如已建议的那样,TRUNC
将完成作业显示。但是,如果 区域设置特定的NLS日期设置 不同,那么您仍会将时间部分视为午夜。
否则,您需要使用TO_DATE
FORMAT
并使用TRUNC
。
<强> 更新 强>
如果您只想显示,请使用TO_CHAR
,否则,如果您的WHERE
条款中有过滤器,请记住TO_CHAR
不会返回{{1} },它将其转换为文字。
答案 4 :(得分:1)
SELECT DISTINCT
to_date(C.RECEIPTDATE,'DD/MM/YYYY'),
(I.CLIENTID ||' - '||PO.CLIENTNAME) AS CLIENT,
D.INVOICEID,
D.SVCFROMDATE,
D.SVCTODATE,
D.SVCCODE
FROM M_EQP_ORDERS
WHERE.....
答案 5 :(得分:0)
Oracle date数据类型始终包含时间。
TRUNC会将时间截断为午夜,如果要匹配两个日期时间的日期部分,则需要执行此操作。时间可能仍会显示,具体取决于客户端的配置方式,因此请使用带有适当格式掩码的TO_CHAR以任意方式显示它。