web-dev-qa-db-fra.com

MySql, combinant la colonne date et heure dans un horodatage

Je suppose que c'est relativement simple à faire, mais je ne suis pas sûr de la syntaxe. J'ai des colonnes de date et d'heure que je souhaite combiner à une colonne d'horodatage. comment pourrais-je l'interroger en utilisant une sélection?

34
Richard

Mysql ne semble pas avoir de constructeur pour datetime tel que datetime ('2017-10-26', '09: 28: 00 '). Vous devrez donc traiter la partie composant comme une chaîne et utiliser la fonction de concaténation de chaîne (Remarque mysql n'a pas l'opérateur || pour la concaténation de chaîne). Si vous voulez le type datetime, vous devrez le caster.

concat(datefield,' ',timefield) as date

select cast(concat('2017-10-26', ' ', '09:28:00') as datetime) as dt;
51
Haim Evgi

Ou vous pouvez essayer la fonction intégrée TIMESTAMP(date,time) .

66
ConceptRat

S'il est possible d'utiliser la fonction intégrée, il suffit de l'utiliser. Quoi qu'il en soit, voici un exemple pour trouver des enregistrements entre des horodatages donnés.

SELECT `id` FROM `ar_time` WHERE TIMESTAMP(`cdate`,`ctime`) BETWEEN fromTimeStamp AND nowTimeStamp;
6
Tom Lime

Pour 24 heures

TIMESTAMP(Date, STR_TO_DATE(Time, '%h:%i %p'))
2
Daniel James Canil
SELECT * FROM tablename WHERE TIMESTAMP(datecol, timecol) > '2015-01-01 12:00:00';
1
Lydia

O.P. a dit SELECT mais au cas où quelqu'un voudrait ajouter une colonne d'horodatage :

ALTER TABLE `t` ADD COLUMN `stamp` TIMESTAMP;
UPDATE `t` SET `stamp` = STR_TO_DATE(CONCAT(`Date`, ' ', `Time`), '%m/%d/%Y %H:%i:%s');

Ajustez formatez les chaînes au goût.

1
Bob Stein