【问题标题】:How to create a datetime from parts in Oracle/PLSQL?如何从 Oracle/PLSQL 中的部分创建日期时间?
【发布时间】:2012-07-10 21:46:29
【问题描述】:

我有一个日期 (4/30/2012)、一个小时 (4) 和一分钟 (45)。我需要将其转换为 Oracle 日期时间值,以便在 PLSQL/Oracle SELECT 语句中进行比较。理想情况下,会有这样的函数(C#,因为我对它比较了解):

var date = "4/30/2012";
var hour = "4";
var minute = "45";
DateTime myDateTime = convertDateTime(date, hour, minute);

我有一个包含三列的表格来组成事件的日期和时间。我有另一个表,其中包含根据开始和结束日期可能匹配或不匹配的项目。在伪 SQL 中,这就是我想要做的:

SELECT 
    G.Name, 
    (SELECT MAX(Cost) 
        FROM CrappyTable AS C 
        WHERE G.StartTime < convertDateTime(C.Date, C.Hour, C.Minute) 
        AND G.EndTime > convertDateTime(C.Date, C.Hour, C.Minute)) as Cost
FROM GoodTable as G
WHERE G.Price < 100.00;

OR "选择名称和最大费用(来自某个时间范围内报告的费用) 价格低于 100 美元。”

是否有一个现有的函数可以做类似上述convertDateTime 函数的事情?

【问题讨论】:

  • 是的,我的意思是 PL/SQL。我很少使用 Oracle,所以我把我的 T 和 PL 搞混了。我解决了我的问题。

标签: oracle plsql date-arithmetic


【解决方案1】:

连接您的日期和时间字段并将它们传递给 TO_DATE(假设 24 小时制):

TO_DATE(date||' '||hour||':'||minute,'MM/DD/YYYY HH24:MI')

这会将您的日期/时间值转换为 Oracle DATE 类型。

【讨论】:

    【解决方案2】:

    或者:

    TO_DATE(date, 'MM/DD/YYYY') + hour/24 + minute/1440
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-28
      • 2018-04-17
      • 2015-12-12
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多