【发布时间】:2013-02-08 19:06:23
【问题描述】:
假设这有一个简单的解决方案,但我找不到它。
我正在尝试对 Oracle 中的 DATE 字段执行一些逻辑。我的愿望是获取一个 DATE 字段并从中减去 X 小时。
例如:SELECT A.MyDATE - 100 Hours from dual;
但是,我需要时间戳格式“YYYY-MM-DD hh:mm”的结果。
我试过CAST(A.MyDATE as TIMESTAMP) - NUMTODSINTERVAL(100/24,'day'),但是没用。
我发现问题在于 MyDATE 字段在转换为时间戳时仍然包含一些剩余时间元素。我怎样才能重置这些??
谢谢!
【问题讨论】:
-
首先,定义“没用”。你得到了什么结果?你预期的结果是什么?当您谈论“剩余时间元素”时,您是否试图从
MyDate的任何一天的午夜减去 100 小时,而不是从MyDate的任何时间减去 100 小时?您希望查询返回什么数据类型?您发布的查询返回timestamp,但如果您正在谈论想要一种特定格式,则意味着您想要返回varchar2。 -
抱歉不够清楚。如果 MyDate 是
2013-01-15,我希望得到2013-01-10 20:00。我没有得到这个 - 我得到像2013-01-10 21:49这样的东西。我发现“MyDate”在转换为时间戳时会保留小时和分钟,而不是 00:00 - 不知道为什么。所以...我试图在时间戳转换后将 MyDate 的时间部分归零,但我不知道该怎么做。