web-dev-qa-db-fra.com

Mettre à jour uniquement l'heure dans un champ mysql DateTime

Comment puis-je mettre à jour uniquement l'heure dans un champ DateTime déjà existant dans MySQL? Je veux que la date reste la même.

29
Martin

Essaye ça:

UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid;
46
Dani

Essaye ça:

UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56');
11
jp.

J'ai résolu de cette façon:

UPDATE table
SET myDateTime = CONCAT_WS(' ',DATE(myDateTime), CURTIME())
WHERE id = @id;

Évidemment, vous devriez changer CURTIME() avec le temps que vous souhaitez.

4
Jubstuff
UPDATE myTable
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan)
WHERE id = @id;

Documenté sur les fonctions de date MySQl Documents MySQL

3
Mark

Essaye ça:

UPDATE sms 
SET entry_period_end_date= entry_period_end_date+INTERVAL 6 Hour 
WHERE TIME(entry_period_end_date) = '06:00:00';
1
KoNTrasT
UPDATE myTable
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan)
WHERE id = @id;

Pour la syntaxe exacte de la fonction, voir this .

1
colithium

Eh bien, exactement ce que vous demandez n'est pas possible. Les composants date et heure ne peuvent pas être mis à jour séparément. Vous devez donc calculer la nouvelle valeur DateTime à partir de la valeur existante afin de pouvoir remplacer la valeur entière.

0
Guffa

La page MySQL DEV affiche des fonctions telles que subtime et difftime

Un exemple de code pour sauvegarder l'heure de toutes les publications en 3 heures est indiqué ci-dessus:

UPDATE tablepost SET datepost = SUBTIME( datepost , '0 3:0:0' );

Notez que les valeurs 0 ne modifient pas le champ respectif. Faites attention à ce code, utilisez d'abord select pour tester ces fonctions.

Référence: http://dev.mysql.com/doc/refman/5.5/fr/date-and-time-functions.html#function_subtime

0
orafaelreis

J'ai utiliséADDTIMEde la manière suivante

Plus tôt dans mon serveur cloud, DateTime était défini sur UTC, mais après avoir modifié DateTime en Asia/Kolkata, c’est-à-dire UTC 5:30, je souhaitais que la même chose soit reflétée dans mes tables de base de données.

Je voulais mettre à jour les colonnes created_at et updated_at de 5 heures 30 minutes. J'ai fait ce qui suit

Pour mettre à jour toutes les lignes de la table

UPDATE 
    products 
SET 
    created_at = ADDTIME(created_at, '5:30:0'), 
    updated_at = ADDTIME(updated_at, '5:30:0') 

Vous pouvez omettre la condition WHERE si vous souhaitez mettre à jour tous les enregistrements, mais depuis mes nouveaux enregistrements ont été mis à jour avec les valeurs appropriées. Donc, seules les lignes dont l'ID est inférieur à 2500 doivent être mises à jour

UPDATE 
    products 
SET 
    created_at = ADDTIME(created_at, '5:30:0'), 
    updated_at = ADDTIME(updated_at, '5:30:0') 
WHERE
    id < 2500;
0
Channaveer Hakari
UPDATE `table`
SET time = ADDTIME(time, INTERVAL 13 Hour);
0
Zed

En supposant que vous ayez un champ DATE et un champ HEURE et que vous souhaitiez insérer l'heure dans la date, essayez ceci:

UPDATE mytable
SET mydatefield = ADDTIME( DATE_FORMAT(mydatefield,'%Y-%m-%d 00:00:00'), mydatefield)
WHERE myid = ...
0
Tommy Raun