У меня есть объект даты и времени в C#, и я хочу сделать вставку в поле даты и времени SQL Server. Каков правильный формат для этого?
Правильный способ сделать это - использовать параметризованный запрос, не форматирование текста. Затем вы можете просто использовать строго типизированный параметр SqlDbType.DateTime
.
(Если вам абсолютно необходимо использовать форматирование текста для этого - , и я настоятельно не рекомендую его - тогда что-то вроде ггггММдд ЧЧ: мм: сс
должно помочь.)
Чтобы расширить ответ @ Luke, я столкнулся с этой ошибкой на днях.
Формат гггг-ММ-дд ЧЧ: мм: сс
имеет локаль / language проблема в SQL Server 2005 (пример - французский), но исправлена в SQL 2008:
Поэтому НЕ используйте этот формат: гггг-ММ-дд ЧЧ: мм: сс
(пробел
Используйте только: гггг-ММ-ддTHH: мм: сс
(разделитель «Т») или ггггММдд ЧЧ: мм: сс
(без разделителей тире)
Важно, если вы создаете сценарии, которые включают константы datetime
.
используйте SET DATEFORMAT
образец взят отсюда
SET NOCOUNT ON
CREATE TABLE X(EXAMPLE INT, D SMALLDATETIME)
-- EXAMPLE 1
SET DATEFORMAT MDY
INSERT INTO X VALUES (1, '10/30/56')
-- EXAMPLE 2
SET DATEFORMAT YDM
INSERT INTO X VALUES (2, '56/31/10')
-- EXAMPLE 3
SET DATEFORMAT YMD
INSERT INTO X VALUES (3, '56/10/31')
SELECT * FROM X