Informix:日期时间操作

时间:2010-05-27 17:07:24

标签: datetime informix

我在表test1中有2个字段:

onlydate DATE
onlytime DATETIME HOUR TO MINUTE

和表test2中的1个字段:

dateandtime DATETIME YEAR TO SECOND

现在我需要追加onlydate和onlytime字段的值并将其设置为dateandtime字段。我该怎么做?

2 个答案:

答案 0 :(得分:3)

基本问题是:

  1. 将DATE转换为DATETIME - 使用EXTEND。
  2. 将DATETIME转换为INTERVAL - 使用减法。
  3. 组合这两个概念并仅应用于SELECT:

    create temp table td(dateonly date not null, timeonly datetime hour to minute);
    insert into td values('2010-05-31', '06:30');
    select extend(dateonly, year to second) + 
           (timeonly - datetime(00:00) hour to minute) from td;
    

    结果就是你想要的:

    DATETIME YEAR TO SECOND
    2010-05-31 06:30:00
    

    timeonly减去午夜时间将其转换为间隔时间为分钟;你可以添加一个DATETIME年份到第二个和一个间隔时间来分钟,到达第二个月。您无法添加两个DATETIME值。

    所以,严格回答你的问题,你会写:

    INSERT INTO Test2(DateAndTime)
         SELECT EXTEND(DateOnly, YEAR TO SECOND) + 
                      (TimeOnly - DATETIME(00:00) HOUR TO MINUTE) AS DateAndTime
           FROM Test1;
    

    (我使用DBDATE = Y4MD-运行,以便显示的日期文字按预期工作。无论DBDATE的设置如何,要可靠地插入DATE常量,请使用MDY(5,31,2010)。)

答案 1 :(得分:1)

您可以将两个值连接为文本,并将其转换为日期时间,如:

update datetime_test
   set dateandtime = (dateonly || ' ' || timeonly || ':00')::
                      datetime year to second