2017-09-17 3 views
1

J'ai des problèmes avec l'insertion du format ISO8601 Datetime dans ma base de données MySQL.Insertion MySQL Format de date ISO8601

Je voudrais insérer le format ISO (c'est-à-dire yyyymmddThhmmss + | -hhmm) dans ma table de base de données, colonne DATETIME.

Lorsque je tente d'insérer je suis un problème:

opération a échoué: Une erreur est survenue lors de l'application du script SQL pour la base de données. En cours d'exécution: UPDATE db. orders SET date = '20080915T155300 + 0500' O WH id = '1';

ERROR 1292: 1292: valeur datetime incorrect: '20080915T155300 + 0500' pour colonne 'date' à la ligne 1 instruction SQL: UPDATE db. orders SET date = '20080915T155300 + 0500' OU id = '1'

Est-il possible que je peux sauver datetimes avec ce format dans MySQL?

+0

"Est-il possible de sauvegarder des datetime avec ce format dans MySQL?" Non, il n'y a pas de mode natif .. pense que vous devriez avoir la colonne datetime et la fuseau horaire ... de cette façon, vous pouvez calculer le datetime avec le fuseau horaire à la volée avec CONVERT_TZ lors de la sélection –

Répondre

0

MySQL a un support plutôt arcanique pour les fuseaux horaires. Peut-être que cela fait ce que vous voulez:

select convert_tz(str_to_date(left(val, 15), '%Y%m%dT%H%i%s'), '+00:00', insert(right(val, 5), 4, 0, ':')) 
from (select '20080915T155300+0500' as val) x 
+0

Je devrais récupérer datetime inséré avec fuseau horaire, aussi. Pensez-vous que je pourrais inverser la valeur insérée (avec timezone) et la récupérer, parce que je vois qu'elle convertit seulement les heures basées sur + HH: mm (fuseau horaire) et insère '2008-09-15 20:53:00'? – ldragicevic

+0

@ldragicevic. . . Vous pouvez échanger les deux arguments pour obtenir le comportement opposé. –