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