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

新手上路,请多包涵

我有这个 sql 请求来检索一些数据,并且我有这个返回日期和时间的列’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;

原文由 JDoeBloke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 548
2 个回答

通常人们会简单地用 TRUNC 截断日期时间:

 TRUNC(pa.fromdate)

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

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

如果你想要一个固定的字符串格式(例如为了写入一个文件),你可以使用 TO_CHAR 代替:

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

原文由 Thorsten Kettner 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Dean Newstead 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进