在Oracle中只有没有时间的日期

时间:2017-05-22 05:49:18

标签: sql oracle

我有这个sql请求来检索一些数据,我有这个columd' pa.fromdate'返回日期和时间。如何让它仅返回DD.MM.YYYY'中的日期?格式。我试过trunc(to_date(pa.fromdate, 'MM.DD.YYYY'))之类的东西。不行。我怎么能这样做?

SELECT pro.inscatid,
  t.epotypeid,
  t.paysum,
  t.note,
  pa.blankno,
  pa.blankseria,
  pa.signtime,
  pa.fromdate,
  ca.accnum,
  ou.name,
  cst.inn,
  pkg_customers.GETCUSTOMERFULLNAME(cst.id) cstfio
FROM epo_orders t
LEFT JOIN epo_orderdetails od
ON od.orderid      = t.id
AND od.iscanceldoc = -1
LEFT JOIN plc_Agree pa
ON pa.id = od.agreeid
LEFT JOIN pro_products pro
ON pro.id = pa.proid
LEFT JOIN nsk_transferdetails td
ON td.transferid = pa.transferid
AND td.orgtypeid = 4
LEFT JOIN cst_customers cst
ON cst.id = t.cstid
LEFT JOIN cst_cstaccounts ca
ON ca.id = t.cstaccid
LEFT JOIN nsk_orgunits ou
ON td.orgunitid    = ou.id
WHERE t.epotypeid IN (159,1010,169,175)
AND rownum         <20;

6 个答案:

答案 0 :(得分:10)

通常只需使用TRUNC截断日期时间:

TRUNC(pa.fromdate)

这会从日期时间中删除时间部分,因此您只能获得日期。然后在您的应用程序层中,您将关心如何显示它。

例如,您有一个带网格的GUI。网格根据用户的系统设置(例如Windows区域设置)显示日期,但网格知道它的日期并可以相应地排序。为此,您需要使用日期填充网格,而不是使用代表日期的字符串填充网格。

如果您想要固定的字符串格式(例如,为了写入文件),您可以改为使用TO_CHAR

TO_CHAR(pa.fromdate, 'dd.mm.yyyy')

答案 1 :(得分:1)

尝试使用to_char(pa.fromdate, 'MM.DD.YYYY'),这将为您提供所需的结果

答案 2 :(得分:1)

请勿在日期值列中使用to_date(),请使用带掩码的to_char()

    select 
    ......
        to_char(pa.fromdate,'MM.DD.YYYY') fromdate
    ......
from ....
where ....

答案 3 :(得分:0)

试试这个

select pro.inscatid,
t.epotypeid,
t.paysum,
t.note,
pa.blankno,
pa.blankseria,
pa.signtime,
to_char(pa.fromdate,'MM.DD.YYYY')fromdate,
ca.accnum,
ou.name,
cst.inn,
pkg_customers.GETCUSTOMERFULLNAME(cst.id) cstfio 
 from
epo_orders t
left join epo_orderdetails od on od.orderid = t.id and od.iscanceldoc = -1
left join plc_Agree pa on pa.id = od.agreeid
left join pro_products pro on pro.id = pa.proid
left join nsk_transferdetails td on td.transferid = pa.transferid and td.orgtypeid = 4
left join cst_customers cst on cst.id = t.cstid
left join cst_cstaccounts ca on ca.id = t.cstaccid
left join nsk_orgunits ou on td.orgunitid = ou.id 
where t.epotypeid in (159,1010,169,175) and rownum<20

答案 4 :(得分:0)

您可以使用to_char()功能。您可以使用trunc()来解决问题。

答案 5 :(得分:-1)

SELECT to_char(Column_name,'DD / MM / YYYY')Column_Name FROM Table_Name