C# 如何仅存储datetime的日期部分。SQL Server表datetime列的Today属性?
我正在尝试使用更新SQL Server 2012表中的C# 如何仅存储datetime的日期部分。SQL Server表datetime列的Today属性?,c#,sql,sql-server-2012,linq-to-sql,C#,Sql,Sql Server 2012,Linq To Sql,我正在尝试使用更新SQL Server 2012表中的datetime列 newItem.DateSaved = DateTime.Today; 我只想保存DateTime中的Date部分,但当我在表中进行检查时,我可以看到它还保存了时间部分:2018-07-27 00:00:00.000。 如何使其仅存储日期零件2018-07-27 编辑 因为我的列是datetime,所以我发现我不能只存储日期部分。但是我怎样才能只向用户显示日期部分而不显示时间呢?以下是Linq to SQL查询的sele
datetime
列
newItem.DateSaved = DateTime.Today;
我只想保存DateTime
中的Date
部分,但当我在表中进行检查时,我可以看到它还保存了时间部分:2018-07-27 00:00:00.000
。
如何使其仅存储日期
零件<代码>2018-07-27
编辑
因为我的列是datetime
,所以我发现我不能只存储日期部分。但是我怎样才能只向用户显示日期部分而不显示时间呢?以下是Linq to SQL查询的select部分:
select new { Date = smv.DateSaved.Value.Date }).Distinct();
一个
datetime
列总是有一个时间部分——只是,在你的例子中,它都是零。Adatatime
只是一个隐藏的数字;对于它拥有/没有什么,它没有任何选择;类似地,在您的代码尝试显示它之前,它没有任何格式化的概念,然后是dispalying代码选择格式
如果不需要时间部分,请对列使用
date
而不是datetime
。将SQL Server中的列类型从datetime
更改为date
()如果只想在SQL Server数据库中存储没有时间的日期,可以将列类型设置为date
ALTER TABLE table_name
ALTER COLUMN DateSaved date;
参考:
如果模型中有一个DateTime
属性,并且只想显示日期部分,只需在视图中的控件中对其进行格式化即可。例如:
$"{newItem.DateSaved:yyyy-MM-dd}"
或
如果希望使用默认格式,还可以使用“d”
或“d”
(短版和长版),而不是使用特定格式,如“yyyy-MM-dd”
如果您的视图是用HTML或XAML编写的,请使用相同的格式化技术在那里进行处理。这是因为数据库上的字段是
DateTime
。如果只想存储日期,则应该有一个日期数据类型的字段。在这里,您可以看到日期数据类型之间的差异。因为它是DateTime,所以它总是有一个time元素。如果不需要TimeDateTime.Today.Date.ToString(“d”),则仅向用户显示日期部分;将列类型设置为Date
列的sql类型为datetime,因此它希望满足该条件,因此时间部分默认为全零。如果不需要时间部分,请将其更改为日期
@puropoix请查看编辑的帖子
newItem.DateSaved.ToString("yyyy-MM-dd")