2011-12-20 15 views
1

PHPを使用してプログラム的にデータを挿入しようとし、機能を経由してPHP ISO 8601形式とSQL Serverの - タイムゾーン

date('c') 

それは次の形式で日付を返します...

2011-12-20T19:01:03+11:00 

しかし、これは、SQL Serverデータベースに挿入するときには適切ではありません。それは

は今、もちろん、この問題を回避するには多くの方法がある文字列から日付/時刻を変換する際に

の変換が失敗した...エラーを返します。データを挿入するときに簡単にフォーマットを変更し、yyyy-mm-dd hh:mm:ss(正確ではない)を指定することができます。しかし、私はむしろ日付( 'c')形式を使用して、その呼び出しに依存して自分の問題を処理することを好みます。

PDOとZend_DBを使用してデータベースに接続しています。

提案がありますか?

+0

私は、MySQLで日付( 'C')を使用して問題ありません。どのデータベースを使用していますか? –

+0

実際にはSQL Server 2008データベースです。このメモでは、MySQLは魅力的に動作します。 – Oomta

答えて

1

日付の保存に使用するフィールドの種類は何ですか? datetimeでは機能しません。

クイックテスト:

-- shows error 
CREATE TABLE #tmp1 (
    c1 varchar(30), 
    dto1 datetimeoffset, 
    dt1 datetime 
) 
GO 

INSERT INTO #tmp1 (
    c1, 
    dto1, 
    dt1 
) VALUES (
    '2011-12-20T19:01:03+11:00', 
    '2011-12-20T19:01:03+11:00', 
    '2011-12-20T19:01:03+11:00' 
) 
GO 

SELECT * FROM #tmp1 

DROP TABLE #tmp1 
GO 

-- works - datetime2 
CREATE TABLE #tmp2 (
    c1 varchar(30), 
    dto1 datetimeoffset, 
    dt2 datetime2 
) 
GO 

INSERT INTO #tmp2 (
    c1, 
    dto1, 
    dt2 
) VALUES (
    '2011-12-20T19:01:03+11:00', 
    '2011-12-20T19:01:03+11:00', 
    '2011-12-20T19:01:03+11:00' 
) 
GO 

SELECT * FROM #tmp2 

DROP TABLE #tmp2 
GO 
+0

ありがとうBartekR、これは私のために働いた。今までdatetime2のデータ型についてはわかりませんでした。 – Oomta

関連する問題