Я хочу вставить datetime
значение в таблицу (SQL Server), используя запрос sql ниже
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
Но я получаю это сообщение об ошибке. Incorrect syntax near '10'.
Я пробовал это с цитатами
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
Я получаю это сообщение об ошибке Cannot convert varchar to datetime
Пожалуйста, помогите! Спасибо.
5
означает?YYYYMMDD HH:MM:SS
(в 24-часовом формате - мировой формат, кто угодно, кроме США, не только военный ...) без тире - это работает, даже дляBritish
языка. Однако, если вы используетеYYYY-MM-DD HH:MM:SS
, он не работает - в этом случае (с тире) вам нужно разделить дату и времяT
литералом.SET DATEFORMAT
заявление . Это настройка для отдельного подключения, но ее можно указать для всего сервера. Вы также можете указать,SET LANGUAGE
чтобы контролировать такие вещи, как какой символ используется для системы счисления и т. Д., И формат даты будет унаследован от этого (опять же, на уровне сервера или соединения). Просто по умолчанию используется американский английский, а mdy - американский формат. Однако ymd с датами 4 года всегда работает.Более независимым от языка выбором для строковых литералов является международный стандарт ISO 8601 в формате «ГГГГ-ММ-ДДTчч: мм: сс». Я использовал приведенный ниже запрос SQL для проверки формата, и он действительно работает на всех языках SQL в sys.syslanguages :
Согласно разделу « Строковые форматы даты и времени » в Microsoft TechNet, стандартный формат даты ANSI Standard SQL «ГГГГ-ММ-ДД чч: мм: сс» должен быть «многоязычным». Однако при использовании того же запроса формат ANSI работает не на всех языках SQL.
Например, на датском языке будет много ошибок, например следующих:
Если вы хотите создать запрос на C # для запуска на SQL Server и вам нужно передать дату в формате ISO 8601, используйте описатель формата Sortable «s» :
источник
YYYYMMDD
только дату, и либоYYYY-MM-DDThh:mm:ss
(с тире, и да,T
между датой и временем!) ИлиYYYYMMDD HH:MM:SS
(без тире, без литерала разделения), чтобы быть действительно независимым от языка ...Студия управления создает такие скрипты, как:
источник
вам нужно добавить это как
источник
Нет необходимости использовать convert. Просто укажите дату в формате ISO 8601 как дату в кавычках.
Вот так:
Разделитель должен быть a
/
и заключен в одинарные'
кавычки.источник
Если вы храните значения на любом языке программирования
Вот пример на C #
Чтобы сохранить дату, вы должны сначала преобразовать ее, а затем сохранить
FooDate - это переменная datetime, которая содержит вашу дату в вашем формате.
источник
Я сталкиваюсь с более общей проблемой: получение разных (и не обязательно известных) форматов datetime и вставка их в столбец datetime. Я решил это с помощью этого оператора, который, наконец, стал скалярной функцией (актуален для канонического, американского, ANSI и британского \ franch стиля даты - ODBC, может быть расширен):
источник