Les questions fondamentales sont les suivantes :
- Conversion de DATE en DATETIME -- utiliser EXTEND.
- Conversion de DATETIME en INTERVALLE -- utiliser la soustraction.
Assemblage de ces deux concepts et application à SELECT uniquement :
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;
Le résultat est ce que vous voulez :
DATETIME YEAR TO SECOND
2010-05-31 06:30:00
Soustraire minuit de timeonly
le convertit en un INTERVALLE D'HEURE À MINUTE ; vous pouvez additionner un DATETIME ANNÉE À LA SECONDE et un INTERVALLE D'HEURE À MINUTE, pour obtenir un DATETIME ANNÉE À LA SECONDE. Vous ne pouvez pas additionner deux valeurs DATETIME.
Donc, pour répondre strictement à votre question, vous écrirez :
INSERT INTO Test2(DateAndTime)
SELECT EXTEND(DateOnly, YEAR TO SECOND) +
(TimeOnly - DATETIME(00:00) HOUR TO MINUTE) AS DateAndTime
FROM Test1;
(Je fonctionne avec DBDATE=Y4MD- pour que la date littérale indiquée fonctionne comme prévu. Pour insérer la constante DATE de manière fiable, quel que soit le paramètre de DBDATE, utilisez MDY(5,31,2010)
.)