2010-05-27 53 views
3

我有一個表TEST1 2個字段:表中的TEST2Informix的:日期時間操縱

onlydate DATE 
onlytime DATETIME HOUR TO MINUTE 

和1場:

dateandtime DATETIME YEAR TO SECOND 

現在我需要追加onlydate和onlytime字段的值並將其設置爲日期和時間字段。我怎麼做?

回答

1

您可以連接兩個值文本,然後將其丟至DATETIME,如:

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

當列全部在一個表中,並且'DBDATE ='Y4MD-''時,您的解決方案可以很好地工作。當這些值必須在表之間傳輸時,可能最終會使用INSERT或MERGE語句。當DBDATE被設置爲其他格式時(例如'DBDATE = DMY4 /'或'DBDATE = MDY4 /'),那麼在日期上完成格式化以將其轉換爲字符串意味着它不能被轉換回DATETIME。演員的格式要求是嚴格的。 – 2010-05-31 07:11:27

3

基本的問題是:

  1. 轉換日期爲DATETIME - 用途推廣。
  2. 將DATETIME轉換爲INTERVAL - 使用減法。

組裝這兩個概念,並應用到只選擇:

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 YEAR TO SECOND和INTERVAL HOUR TO MINUTE,從而獲得DATETIME YEAR TO SECOND。您不能添加兩個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,請使用MDY(5,31,2010)。)