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.
Essaye ça:
UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid;
Essaye ça:
UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56');
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.
UPDATE myTable
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan)
WHERE id = @id;
Documenté sur les fonctions de date MySQl Documents MySQL
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';
UPDATE myTable
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan)
WHERE id = @id;
Pour la syntaxe exacte de la fonction, voir this .
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.
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
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;
UPDATE `table`
SET time = ADDTIME(time, INTERVAL 13 Hour);
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 = ...