DateTime в SqlServer VisualStudio C # - PullRequest
       22

DateTime в SqlServer VisualStudio C #

0 голосов
/ 14 апреля 2010

В моем проекте есть база данных с таблицей с именем «ProcessData» и столбцами с именем «Start_At» (тип: DateTime) и «End_At» (тип: DateTime).
Когда я пытаюсь ввести новую запись в эту таблицу, она вводит данные в следующем формате: «ГГГГ / ММ / ДД ЧЧ: мм», когда я действительно хочу, чтобы они были в этом формате: «ГГГГ / ММ / ДД ЧЧ : mm: ss '(вторые не назначены).
Кто-нибудь знает почему и что мне делать, чтобы это исправить?

Вот код, который я использую:

con = new SqlConnection("....");
String startAt = "20100413 11:05:28";
String endAt = "20100414 11:05:28";
...
con.Open();//open the connection, in order to get access to the database
SqlCommand command = new SqlCommand("insert into ProcessData (Start_At, End_At) values('" +  startAt + "','" + endAt + "')", con);
command.ExecuteNonQuery();//execute the 'insert' query.
con.Close();

Большое спасибо

Ответы [ 2 ]

1 голос
/ 14 апреля 2010

Используйте параметризованные запросы вместо создания запроса с использованием строки concat, как вы делаете сейчас.

SqlCommand command = new SqlCommand();
command.Connection = someConnectionObj;
command.CommandText = "INSERT INTO Sometable (datecolumn) VALUES (@p_date)";
command.Parameters.Add ("@p_date", SqlDbType.DateTime).Value = someDate;
command.ExecuteNonQuery();

Кроме того, используйте реальные даты (тип данных DateTime) вместо строк, которые выглядят как даты.

0 голосов
/ 14 апреля 2010

Я только что попробовал это в SQL Server 2005, и я понял, что сама запись содержит количество секунд.

Можете ли вы попробовать:

select 
    Start_At,
    convert(varchar(20), Start_At, 120) as Formatted_Start_At
from 
    ProcessData

и посмотрите, содержит ли Formatted_Start_At значение секунд.

Если это так, ваша БД содержит действительные значения, которые вы ожидаете от нее, и поэтому просто вопрос форматирования вашего вывода.

...