Сохранять стоимость типа датирует в SQL на сервере В-US

Я стараюсь сохранять один string типа date в поле базы данных, но попробовав сохранять дату, день которой преодолел 12-ого числа, он возвращает мне следующую ошибку:

String was not recognized схвати в valid DateTime.

Я попробовал форматировать дату с TryParse и TryParseExact без успеха.

Я попробован сохранять эту стоимость в организации EF отражением:

Пример:

 propertyInfo.SetValue(inputObject, Convert.ToDateTime(propertyVal).ToString("yyyy-MM-dd"), null);

Каким был бы правильный способ сохранять стоимость Date в базе данных с конфигурацией en-US?

Стоимость, которую было бы нужно сохранять, была бы типа YYYY-MM-DD.

2
задан 09.09.2016, 22:55
3 ответа

Преодолев dГ - 12 и он бросает в тебя ошибку, он, потому что в действительности в этом поле он он принадлежит mes. В continuaciГіn пример, чтобы понимать нас лучше:

string fecha = "10/22/2016"; // 22 Octubre 2016
Console.WriteLine("Fecha ingresada: "+fecha);
DateTime fechaFormateada = DateTime.ParseExact(fecha, "MM/dd/yyyy", null);
Console.WriteLine("Fecha con formato: "+fechaFormateada); // 2016-10-22 12:00:00 AM
Console.WriteLine("Fecha con formato corto: "+fechaFormateada.ToShortDateString()); // 2016-10-22
Console.WriteLine("Dia: " + fechaFormateada.Day); //22
Console.WriteLine("Mes: " + fechaFormateada.Month); //10
Console.WriteLine("Anio: " + fechaFormateada.Year);//2016       
Console.ReadLine();

Производя как результат:

Fecha ingresada: 10/22/2016
Fecha con formato: 10/22/2016 12:00:00 AM
Fecha con formato corto: 10/22/2016
Dia: 22
Mes: 10
Anio: 2016

В третьей линии, где определяется формат как "MM/dd/yyyy" , - из-за формата, из-за которого ты используешь. Для большей информации, проверь: https://msdn.microsoft.com/en-us/library/8kb3ddd4 (v=vs.110) .aspx

2
ответ дан 24.11.2019, 13:27

каким был бы правильный способ сохранять стоимость Восходите в базе данных с setting В-US?

Предполагая, что поле в базе данных - типа DateTime или Date, формат даты, который не даст тебе проблемы, чтобы представлять такую дату как цепь в решении Insert/Update, с SQL Server установленный и конфигурировавший на различных языках, - YYYYMMDD для одинокого дата и YYYYMMDD HH:MM:SS для даты / в час. Если, без схем и с двумя точками; я знаю, что это странно, если ты имеешь background другой базы данных, но так - SQL Server (и я не буду защищать это).

С этим в разуме, ты мог бы изменять твой код в это:

propertyInfo.SetValue(inputObject,  Convert.ToDateTime(propertyVal).ToString("yyyyMMdd"), null);

И теоретически оно было должно функционировать

Выражение это...

Избеги использовать дословные представления для дат, числа, и т.д.

Интерфейсы доступа к данным большинства современных языков, у него есть способность реализовывать хорошо задание послать и вернуть информацию правильно в практически любой механизм базы данных, если ты представляешь данные в родных форматах языка. Авторы драйверов различных механизмов поручили себе этих больших малышей детали (что, если десятичный разделитель - точка, или запятая, которая, если дата представляется формы или другой). В самом деле, много клиентов базы данных примут бинарные данные, с которым также оптимизируется время процесса и путешествия по сети.

Если ты можешь, пошли такие даты как даты, числа как числа, и т.д. и забудь навсегда этих проблем.

1
ответ дан 24.11.2019, 13:27
  • 1
    Совершенный, я протестирую inserci и # 243; n с форматом даты, которую ты комментируешь. Спасибо. –  Kram_ 09.09.2016, 22:05

Расширяя ответ @jachguate, формат "yyyyMMdd" обозначается "формат цепи, не отделяя (UnseparatedStringFormat)", этот формат - multilingüe и независимо от установленного DATEFORMAT, а следовательно не имеет значение твоя конфигурация он будет сохранять правильно в базе данных.

Я назначаю встречу:

Форматы буквального цепи касаются презентации данных в приложениях пользователей, но не нижележащего формата хранения целых чисел в SQL Server. Однако, SQL Server мог бы интерпретировать стоимость даты в формате буквального цепи, предоставляемом приложением или пользователе для хранения или в функцию даты, как различных дат. Интерпретация зависит от комбинации формата буквального цепи, от типа данных и от конфигурации во время выполнения SET DATEFORMAT, SET LANGUAGE и от предопределенного выбора языка.

Больше информации: Использовать данные даты и часа (MSDN)

1
ответ дан 24.11.2019, 13:27