Datetime Informix:日期时间操作
表test1中有2个字段:Datetime Informix:日期时间操作,datetime,informix,Datetime,Informix,表test1中有2个字段: onlydate DATE onlytime DATETIME HOUR TO MINUTE 和表test2中的1个字段: dateandtime DATETIME YEAR TO SECOND 现在我需要附加onlydate和onlytime字段的值,并将其设置为dateandtime字段。如何实现这一点?您可以将两个值连接为文本,并将其转换为datetime,如下所示: update datetime_test set dateandtime = (da
onlydate DATE
onlytime DATETIME HOUR TO MINUTE
和表test2中的1个字段:
dateandtime DATETIME YEAR TO SECOND
现在我需要附加onlydate和onlytime字段的值,并将其设置为dateandtime字段。如何实现这一点?您可以将两个值连接为文本,并将其转换为datetime,如下所示:
update datetime_test
set dateandtime = (dateonly || ' ' || timeonly || ':00')::
datetime year to second
基本问题是:
将日期转换为日期时间-使用扩展。
将日期时间转换为时间间隔-使用减法。
将这两个概念组合起来并仅应用于选择:
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
从时间中减去午夜只会将其转换为小时到分钟的间隔;您可以将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的设置,请使用MDY5,312010。如果列都在一个表中,并且DBDATE='Y4MD-'时,您的解决方案运行良好。当必须在表之间传输值时,可能最终使用INSERT或MERGE语句。如果将DBDATE设置为其他格式,例如DBDATE=DMY4/或DBDATE=MDY4/则在Date上执行的格式设置仅用于将其转换为字符串,这意味着无法将其转换回DATETIME。演员阵容的格式要求很严格。