繁体   English   中英

ASP.NET和SQL Server日期时间问题

[英]asp.NET and SQL Server datetime issues

我很难将日期信息存储到SQL Server的datetime列中。

我从用户那里得到了三列的输入:

  1. 创建日期
  2. 准备日期
  3. 下次准备日期

我使用calendarextender并将日期格式设置为“ yyyy / MM / dd”。 当所有字段都有日期时,它们将存储在数据库中,例如16-10-2016(dd-MM-yyyy)。

此时,我有两个问题:

  1. 这些列是可选的,当其中一些为空时,我的代码不起作用(我假设是因为datetime不能为null)。 为了克服这个问题,我使用了以下代码片段,但仍然无法正常工作。

     DateTime? creationDate= null; if (creationDateTextbox.Text != null && creationDateTextbox.Text != "") { creationDate= Convert.ToDateTime(creationDateTextbox.Text); } 
  2. 当我从数据库中获取日期时,它们显示为2016年10月16日(MM-dd-yyyy),与我格式化日期的方式不同。 我想以用户输入的格式显示它。

日期存储在数据库中时没有格式。 实际上,它通常只是一个很大的long ,它从设定的开始日期开始算起毫秒数。

如果要存储格式,则需要停止将其存储为日期,而只是将文本视为数据库中的文本,但是,如果这样做,则将无法获得按日期范围排序或过滤的优势,因为它将只是被视为文字。

日期时间没有任何格式您可以格式化为字符串,假设您的DateTime类型数据库字段dt包含日期为10/16/2016 (MM-dd-yyyy)则可以将其转换

string s = dt.ToString("yyyy/MM/dd");

您的问题之一的答案在这里: MSDN您可以使用数据批注来格式化从SQL DB获得的日期。 我假设您使用的是EF6; 如果不是,则可以在SSMS中将该字段更改为varchar,然后将日期存储为字符串。

第二点,我不清楚,但是如果您希望SQL DB列是可选的,则可以使用Optional数据注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM