2017-09-17 28 views
1

MySQLデータベースにISO8601日時フォーマットを挿入する際に問題があります。MySQLの挿入ISO8601日時フォーマット

データベーステーブルのDATETIME列にISO形式(yyyymmddThhmmss + | -hhmm)を挿入します。

私は私が問題を抱えて挿入しよう

操作は失敗しました: データベースにSQLスクリプトを適用中にエラーが発生しました。実行中:更新dborders SET date = '20080915T155300 + 0500' WHERE id = '1';

エラー1292:1292:間違ったdatetime値: 列 'date' in row 1のSQL文:UPDATE dbの場合、 '20080915T155300 + 0500'が正しくありません。 orders SET date = '+ 0500 20080915T155300' id = '1'

は、私は、MySQLには、この形式で日付時刻を保存することができます方法はありますか?

+0

"私はこの形式のdatetimesをMySQLに保存する方法はありますか?"いいえネイティブな方法はありません..あなたはdatetimeカラムとタイムゾーンカラムを持つべきだと思う...そのように選択するとCONVERT_TZを使ってオンザフライでタイムゾーンで日時を計算することができます –

答えて

0

MySQLは、タイムゾーンのサポートが非常に難解です。おそらくこれはあなたが望むことをします:

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

私は挿入されたdatetimeを取得する必要がありますタイムゾーンも。 + HH:mm(タイムゾーン)と '2008-09-15 20:53:00'に基づいて時間を変換するだけであるため、挿入された値(タイムゾーン付き)を元に戻して取得することができると思いますか? – ldragicevic

+0

@ldragicevic。 。 。 2つの引数を入れ替えて、逆の動作をさせることができます。 –