2011-12-20 48 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

我沒有任何日期使用問題( 'C')與MySQL。你正在使用哪個數據庫? – 2011-12-20 17:35:07

+0

實際上這是一個SQL Server 2008數據庫。在那個筆記上,MySQL像一個魅力。 – Oomta 2011-12-20 20:57:53

回答

1

什麼是用於日期存儲的字段類型?它不適用於日期時間。

快速測試:

-- 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 2011-12-28 00:59:45