Формат PHP ISO 8601 и SQL Server - часовой пояс - PullRequest
1 голос
/ 20 декабря 2011

При попытке вставить данные программно с помощью PHP через функцию

date('c')

Возвращает дату в следующем формате ...

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

Но это не подходит, когдавставка в базу данных SQL Server.Он вернется с ошибкой ...

Ошибка преобразования при преобразовании даты и / или времени из строки символов

Теперь, конечно, есть много способов обойти этопроблема.Можно легко перейти и изменить формат при вставке данных и указать гггг-мм-дд чч: мм: сс (не точно).Однако я бы предпочел использовать формат даты ('c') и полагаться на этот вызов, чтобы позаботиться о моей проблеме.

Я подключаюсь к базе данных, используя PDO и Zend_DB.

Есть предложения?

1 Ответ

1 голос
/ 21 декабря 2011

Какой тип поля вы используете для хранения даты? Это не будет работать для даты и времени.

Быстрый тест:

-- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...