2015-02-11 6 views
0

Я пытаюсь вставить 'DateTime.Now' в sql-тип столбца datetime, но когда вставка сделана в sql, дата таблицы в порядке! (exp: 2015-02-11), но время хранится как 00:00:00 !!! Я попробовал много вариантов. это мой код:Вставить Datetime.now из asp.net в sql-сервер

sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s"); 

Что мне не хватает ???

+0

Try..date time.now.to строка ("YYYY-MM-ДД ЧЧ: мм: сс") – Chris

+0

https://msdn.microsoft.com/en-us/ библиотека/8kb3ddd4% 28v = vs.110% 29.aspx – Chris

+0

благодарит @ Крис, это сделано. см. принятый ответ –

ответ

8

Вы указываете SqlDbType от Date - это не имеет времени. Поэтому, когда драйвер преобразует значение параметра в желаемый тип, он удаляет временную часть.

Вы также преобразования DateTime.Now в строку без всякой видимой причины ... и делать это таким образом, который использует нечетное и формат сжатия с потерями времени (h:m:s, без AM/PM целеуказателем). Если вы действительно сделал хотите преобразовать в строку, было бы лучше использовать HH:mm:ss для спецификатора времени.

Эта линия:

sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s"); 

должно быть:

sqlComm.Parameters.Add("@join_date", SqlDbType.DateTime).Value = DateTime.Now; 
+0

да-спасибо! Дорогой участок времени Jon Skeet был добавлен в более поздний пересмотр, поэтому я забыл изменить DBType, и преобразование строк было одним из моих вариантов. в любом случае спасибо вам большое. –

2

ответ Джона хорошо, но также, что вы можете сделать вещи проще, как это:

sqlComm.Parameters.AddWithValue("@join_date", DateTime.Now); 

Он будет автоматически используйте правильный тип данных в зависимости от типа значения.

Кроме того - Вы сказали, что вы звонили этому из ASP.Net. В веб-приложениях DateTime.Now обычно не подходит - поскольку он использует часовой пояс сервера и не сохраняет информацию о смещении, поэтому он может быть неоднозначным во время переходов daylight saving time. Я рекомендую хранить значения в формате UTC в базе данных (DateTime.UtcNow).

Если вы считаете, что местный часовой пояс сервера имеет значение в вашем прецеденте, рассмотрите возможность переключения столбца базы данных на тип datetimeoffset и используя DateTimeOffset.Now. Это позволит избежать проблем с переходами DST.

Смотрите также: The case against DateTime.Now

+0

ничего себе! спасибо Это очень помогло! –

Смежные вопросы