navi G Ответов: 2

Храните в базе данных только дату, но не время ASP.NET с#


Всем привет,
Я хочу сохранить в базе данных только дату, но не время.
У меня есть тип данных "дата" в таблице, но проблема в том, что он хранит дату и время как
02/25/15 00:00:00. Но мне нужна только дата, а не время.
И я использую TextBox с TextMode= "date" для вставки даты.

Что я уже пробовал:

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlCommand command = new SqlCommand("SPinsertitem", con);
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add("@rdatep", SqlDbType.Date).Value = txt_rdate.Text;
        try
        {
            
            command.ExecuteNonQuery();
            Label1.Text = ("Successfully ADDED");
        }
        catch (SqlException ex)
        {
            Label1.Text = ("SQL Error" + ex.Message.ToString());
            
        }

2 Ответов

Рейтинг:
17

Bryian Tan

В таблице Тип данных столбца должен быть Date, а не DateTime. Вот пример

DECLARE @temp as TABLE (
	DateColumn1 Date,
	DateColumn2 DateTime
)

INSERT INTO @temp
	SELECT '1/1/2017','1/1/2017'

SELECT * FROM @temp


Выход:
DateColumn1	DateColumn2
2017-01-01	2017-01-01 00:00:00.000


Рейтинг:
11

Dave Kreskowiak

Сможете ли вы это сделать или нет, зависит от вашего ядра базы данных. Какую версию SQL Server вы используете?

Каков тип столбца в базе данных? Если это datetime (common), то вам действительно не нужно беспокоиться об этом, если только дисковое пространство не является проблемой. Отображение времени как части даты - это выбор пользовательского интерфейса, чтобы показать его или нет, на самом деле это не выбор в базе данных.

Если вы можете изменить тип столбца на дату (только в SQL Server 2008 и выше), то вам следует сделать это вместо этого. Имейте в виду, что в вашем коде нет эквивилентного типа. Вы все равно получите объект DateTime с датой из базы данных и временем, установленным в полночь.