Вопрос

У меня есть база данных в моем проекте с таблицей с именем «ProcessData» и столбцы с именем «START_AT» (тип: DateTime) и «END_AT» (тип: dateTime).
Когда я пытаюсь ввести новую запись в эту таблицу, она ввода данных в следующем формате: «ГГГГ / ММ / ДД HH: MM», когда я фактически хочу, чтобы он был в этом формате: «ГГГГ / ММ / ДД HH : мм: 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();

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

Это было полезно?

Решение

Используйте параметризованные запросы вместо создания запроса, используя строку 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 DataType) вместо строк, которые похожи, что это будет дата.

Другие советы

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

Ты можешь попробовать:

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

и посмотрите, если форматтация_start_at содержит значение секунд.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top