Как я могу сохранить только часть даты datetime. Свойство Today для столбца даты и времени таблицы SQL Server?

Я пытаюсь обновить столбец datetime в таблице SQL Server 2012, используя

newItem.DateSaved = DateTime.Today;

Я хочу сохранить только часть Date из DateTime, но когда я проверяю таблицу, я вижу, что она также сохраняет часть времени: 2018-07-27 00:00:00.000. Как я могу сохранить только часть date? 2018-07-27 ?

Изменить

Поскольку мой столбец datetime, я вижу, что не могу хранить только часть даты. Но как я могу показать пользователю только часть даты без времени? Вот выбранная часть запроса Linq-to-SQL:

select new { Date = smv.DateSaved.Value.Date }).Distinct();

person aggicd    schedule 27.07.2018    source источник
comment
Поскольку это DateTime, он всегда будет иметь элемент времени. Отображать пользователю только часть даты, если вам не нужно время   -  person Ňɏssa Pøngjǣrdenlarp    schedule 27.07.2018
comment
DateTime.Today.Date.ToString(d);   -  person Veljko89    schedule 27.07.2018
comment
Установите тип столбца Date   -  person arekzyla    schedule 27.07.2018
comment
Ваш тип sql для столбца - datetime, поэтому он хочет удовлетворить это, и поэтому часть времени по умолчанию равна всем нулям. Если вам не нужна временная часть, измените ее на date.   -  person CodingYoshi    schedule 27.07.2018
comment
@Plutonix, пожалуйста, проверьте отредактированный пост   -  person aggicd    schedule 27.07.2018
comment
@aggicd то, как вы что-то отображаете, связано с пользовательским интерфейсом, а не с запросом. Задайте соответствующую строку формата в элементе управления, теге HTML, атрибуте отображения или привязке данных, которые вы используете.   -  person Panagiotis Kanavos    schedule 27.07.2018


Ответы (4)


Столбец datetime всегда имеет временную часть — просто в вашем случае это будут нули. datatime — это просто цифра под капотом; у него нет выбора, что у него есть/чего нет; точно так же он не имеет никакого понятия о форматировании, пока ваш код не попытается отобразить его, а затем уже отображающий код выбирает формат.

Если вам не нужна часть времени, используйте date вместо datetime для столбца.

person Marc Gravell    schedule 27.07.2018


Если вы хотите хранить только дату без времени в базе данных SQL Server, вы можете установить тип столбца date

ALTER TABLE table_name
ALTER COLUMN DateSaved date; 

Ссылка: https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql?view=sql-server-2017

Если у вас есть свойство DateTime в вашей модели, и вы хотите показать только часть даты, просто отформатируйте ее в своем элементе управления в представлении. Например:

$"{newItem.DateSaved:yyyy-MM-dd}"

or

newItem.DateSaved.ToString("yyyy-MM-dd")

Вы также можете использовать "d" или "D" (короткая и длинная версия) вместо определенного формата, такого как "yyyy-MM-dd", если хотите использовать форматирование по умолчанию.

Если ваше представление написано на HTML или XAML, сделайте это там, используя ту же технику форматирования.

person arekzyla    schedule 27.07.2018

Это потому, что ваше поле в базе данных DateTime. Если вы хотите хранить только дату, у вас должно быть поле с типом данных даты. В этом ссылка, вы можете увидеть разницу между типами данных даты.

person Pankwood    schedule 27.07.2018