Проблема с SQL Server запросом на вставку smalldatetime - PullRequest
3 голосов
/ 23 февраля 2010

У меня есть поле:

APP_DATE (smalldatetime)

Я делаю этот запрос:

INSERT INTO table (TYPE, CODE, APP_DATE, DATE) VALUES ('APP', '123', '02/10/2010 12.30', GETDATE())

Не удалось:

Msg 296, Level 16, State 3, Line 1
Conversion from datatype char to smalldatetime generated a value not between the interval of valid values.
Instruction has been interrupted.

(0 row(s) affected)

Что я делаю не так? Мне кажется, это правильный формат для поля ..

Спасибо, что уделили время.

РЕДАКТИРОВАТЬ: SQL Server 2000

Ответы [ 5 ]

6 голосов
/ 23 февраля 2010

Просто используйте : в свое время вместо .. Тогда он вставит нормально.

5 голосов
/ 23 февраля 2010

Можете ли вы попробовать использовать формат даты ISO-8601 (ГГГГММДД ЧЧ: ММ: СС) - это будет работать всегда на SQL Server - независимо от региональных и региональных настроек:

INSERT INTO table (TYPE, CODE, APP_DATE, DATE) 
VALUES ('APP', '123', '20100210 12:30:00', GETDATE())
2 голосов
/ 23 февраля 2010

Неправильный формат даты и времени; год должен состоять из 4 цифр (в противном случае он неоднозначен), а разделитель времени должен быть двоеточием.

2003/01/22 22:31 будет работать. см. эту статью .

1 голос
/ 23 сентября 2013

вставить в yourTable (yourSmallDateTimeColumn) значения ('1900-01-01 11:45:23'); // формат "гггг-ММ-дд ЧЧ: мм: сс"

0 голосов
/ 23 февраля 2010

Если вам не нужен элемент времени в поле, SQL Server по умолчанию установит для вас 00:00:00, если вы просто отправите «02/10/10». Если вам нужен элемент времени, тогда ваш формат для время не так в вашем примере, и это должно быть что-то вроде этого - 02.10.2010 12: 31: 00

...