Формат datetime в формат SQL с использованием C#

Я пытаюсь сохранить текущий формат даты и времени из C# и преобразовать его в формат даты в SQL сервере, так как гггг-ММ-ДД чч:мм:СС, так что я могу использовать его для моей "обновление" запроса.

Это был мой первый код:

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");

Выход на сегодняшний день-это хорошо, но время всегда на "12:00:00" так я изменил мой код следующим образом:

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.TimeOfDay.ToString("HH:mm:ss");

Он дал мне эту ошибку при компиляции:

formatexception версия обработано

И предложил мне нужно разобрать. Поэтому я старался делать это, чтобы мой код согласно моим исследованиям здесь на сайте StackOverflow:

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.Parse.TimeOfDay.ToString("HH:mm:ss");

или

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.tryParse.TimeOfDay.ToString("HH:mm:ss");

Но это'ы говоришь мне, что это'ы метод, который не является допустимым для данного контекста. Я пытался искать решение моей проблемы и я застрял на два часа. Я'м все еще немного нового в C#, вы можете помочь мне, пожалуйста?

Комментарии к вопросу (6)
Решение

попробуйте это ниже

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
Комментарии (4)

в Используя стандартный формат даты и времени на "Ы" - а также обеспечить совместимость интернационализации (ММ/ДД против ДД/ММ):

myDateTime.ToString("s");

=> 2013-12-31T00:00:00

Полные Параметры: (код: результат выборки)

d: 6/15/2008 
D: Sunday, June 15, 2008 
f: Sunday, June 15, 2008 9:15 PM 
F: Sunday, June 15, 2008 9:15:07 PM 
g: 6/15/2008 9:15 PM 
G: 6/15/2008 9:15:07 PM 
m: June 15 
o: 2008-06-15T21:15:07.0000000 
R: Sun, 15 Jun 2008 21:15:07 GMT 
s: 2008-06-15T21:15:07 
t: 9:15 PM 
T: 9:15:07 PM 
u: 2008-06-15 21:15:07Z 
U: Monday, June 16, 2008 4:15:07 AM 
y: June, 2008 

'h:mm:ss.ff t': 9:15:07.00 P 
'd MMM yyyy': 15 Jun 2008 
'HH:mm:ss.f': 21:15:07.0 
'dd MMM HH:mm:ss': 15 Jun 21:15:07 
'\Mon\t\h\: M': Month: 6 
'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00

Поддерживается .Чистая рамки: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0 Ссылка: [`Типа Datetime.Метод ToString Метод][1]

[1]: http://msdn.microsoft.com/en-us/library/zdtaw1bw(в=против 110).аспн

Комментарии (2)

Правильный ответ уже был дан на "параметров" по. Форматирование даты и передавая его в виде строки SQL-сервера может привести к ошибкам, поскольку это зависит от параметров, как дата интерпретируется на стороне сервера. В Европе, мы пишем '1.12.2012' для обозначения 1-го декабря 2012 года, в то время как в других странах это может рассматриваться как 12 января.

При оформлении заявления непосредственно в SSMS я использовать формат ггггммдд, которые, кажется, быть достаточно общим. Я не возникнут какие-либо проблемы на различных установках Я до сих пор работал по.

Есть еще один редко используемый формат, который немного странный, но работает для всех версий:

select { d '2013-10-01' }

вернется первого октября 2013 года.

select { ts '2013-10-01 13:45:01' }

вернусь 1 октября, 1:45:01 вечера

Я настоятельно рекомендуем использовать параметры, и никогда формат свой собственный SQL-код при вставке вместе доморощенные отформатированные фрагменты заявлении. Это запись для SQL-инъекции и какие-то странные ошибки (форматирование числа с плавающей точкой-это еще одна потенциальная проблема)

Комментарии (0)

Ваш первый код будет работать при этом

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); //Remove myDateTime.Date part 
Комментарии (0)

Ваша проблема в "Дата" и имущество, которое усекает Датавремя на сегодняшний день только. Вы могли бы поставить конверсия такой:


DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); // 
Комментарии (0)

Ответ, который я искал, было:

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");

Я'вэ узнал, что вы можете сделать это так:

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString(myCountryDateFormat);

где myCountryDateFormat могут быть изменены, чтобы встретить изменения в зависимости от требований.

Обратите внимание, что помеченные "на этот вопрос уже есть ответ здесь:" есть на самом деле не ответил на вопрос, потому что, как вы можете видеть это раньше а ".Дата" и вместо того, чтобы опустить его. Это'ы довольно запутанным для новых программистов .Чистая

Комментарии (2)

если вы хотите сохранить текущую дату в таблицу, так что вы можете использовать

функции getdate();

или передать эту функцию как параметр

например. 'tblname обновление установить curdate=функции getdate (), где colname=123'

Комментарии (0)

Почему бы не пропустить строку :

SqlDateTime myDateTime = DateTime.Now;
Комментарии (0)

Я думаю, что проблема была двумя односпальными недостающих кавычках.

Это в SQL я бегу к MSSMS:


WHERE checktime >= '2019-01-24 15:01:36.000' AND checktime 
Комментарии (0)

Ваша проблема в свойство "дата", что усекает Датавремя на сегодняшний день только. Вы могли бы поставить конверсия такой:

DateTime myDateTime = DateTime.Now;

string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");
Комментарии (0)

Еще одно решение для передачи даты и времени из C# в SQL-сервере, независимо от настроек языка SQL сервер

якобы, что региональные параметры показывают дату как ДД.Мм. гггг (немецкий стандарт '104') тогда

DateTime myDateTime = DateTime.Now;
string sqlServerDate ="CONVERT("date,'"+myDateTime+"',104)"; 

переходит на C# переменная типа datetime в SQL переменную типа дата-сервера, с учетом сопоставления в соответствии с "104" и правила . Даты в SQL-сервер получает гггг-ММ-ДД

Если региональные параметры дисплея Датавремя по-разному, затем использовать соответствующий совпадающие с сервера SQL преобразовать таблицу

подробнее о правилах: https://www.techonthenet.com/sql_server/functions/convert.php

Комментарии (0)

только ты ставишь на "Т" в+Датавремя.Сейчас.ToLongTimeString()+ '2015-02-23'

Комментарии (1)

Если вы хотите обновить таблицу с типом datetime, вы можете использовать SQL-строку, как в этом примере:

int fieldId;
DateTime myDateTime = DateTime.Now
string sql = string.Format(@"UPDATE TableName SET DateFieldName='{0}' WHERE FieldID={1}, myDateTime.ToString("yyyy-MM-dd HH:mm:ss"), fieldId.ToString());
Комментарии (1)