Y at-il moyen dans MySQL de créer DATETIME à partir d’un attribut donné de type DATE et d’un attribut donné de type TIME?
datetime = CONCAT(date, ' ', time);
Copié à partir de la documentation MySQL:
TIMESTAMP (expr), TIMESTAMP (expr1, expr2)
Avec un seul argument, cette fonction renvoie l'expression de date ou de date/heure expr en tant que valeur date/heure. Avec deux arguments, il ajoute l'expression time expr2 à l'expression date ou datetime expr1 et renvoie le résultat sous la forme d'une valeur datetime.
mysql> SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
Pour obtenir une valeur true DATETIME
à partir de vos deux valeurs DATE
et TIME
distinctes:
STR_TO_DATE(CONCAT(date, ' ', time), '%Y-%m-%d %H:%i:%s')
Vous pouvez utiliser ADDTIME()
:
ADDTIME(CONVERT(date, DATETIME), time)
date
peut être une chaîne de date ou un objet DATE
.time
peut être une chaîne temporelle ou un objet TIME
.Testé dans MySQL 5.5.
select timestamp('2003-12-31 12:00:00','12:00:00');
fonctionne lorsque la chaîne est correctement formatée. Sinon, vous pouvez simplement inclure l'heure à l'aide de str_to_date.
select str_to_date('12/31/2003 14:59','%m/%d/%Y %H:%i');
Sans créer ni analyser de chaînes, ajoutez simplement un intervalle à la date:
set @dt_text = '1964-05-13 15:34:05.757' ;
set @d = date(@dt_text) ;
set @t = time(@dt_text) ;
select @d, @t, @d + interval time_to_sec( @t ) second;
Toutefois, cela tronque les microsecondes.
Je suis d'accord avec Muki - assurez-vous de prendre en compte les fuseaux horaires et l'heure d'été!