C# asp.NET和SQL Server日期时间问题
我很难将日期信息存储到SQL Server的datetime列中 我从用户处获得三列的输入:C# asp.NET和SQL Server日期时间问题,c#,asp.net,sql-server,datetime,C#,Asp.net,Sql Server,Datetime,我很难将日期信息存储到SQL Server的datetime列中 我从用户处获得三列的输入: 创建日期 准备日期 下一个准备日期 我使用calendarextender并将日期格式化为“yyyy/MM/dd”。当所有字段都有日期时,它们存储在数据库中,例如2016年10月16日(dd-MM-yyyy) 在这一点上,我有两个问题: 这些列是可选的,当其中一些列为空时,我的代码不起作用(我假设datetime不能为null)。为了克服这个问题,我使用了下面的代码片段,但仍然不起作用 DateTime
DateTime? creationDate= null;
if (creationDateTextbox.Text != null && creationDateTextbox.Text != "")
{
creationDate= Convert.ToDateTime(creationDateTextbox.Text);
}
日期时间没有任何可以格式化为字符串的格式,假设您的日期时间类型数据库字段
dt
,其中包含日期10/16/2016(MM dd yyyy)
,则您可以将其转换
string s = dt.ToString("yyyy/MM/dd");
日期时间没有任何可以格式化为字符串的格式,假设您的日期时间类型数据库字段
dt
,其中包含日期10/16/2016(MM dd yyyy)
,则您可以将其转换
string s = dt.ToString("yyyy/MM/dd");
日期存储在数据库中时没有格式。实际上,它通常只是一个非常大的
long
,用于计算从设定的开始日期算起的毫秒数
如果要存储格式,则需要停止将其存储为日期,而只将文本视为数据库中的文本,但是如果这样做,则无法获得按日期范围排序或筛选的优势,因为它只会被视为文本。日期在数据库中存储时没有格式。实际上,它通常只是一个非常大的
long
,用于计算从设定的开始日期算起的毫秒数
如果要存储格式,则需要停止将其存储为日期,而只将文本视为数据库中的文本,但是如果这样做,则无法获得按日期范围排序或筛选的优势,因为它将仅被视为文本。您的一个问题的答案如下: 您可以使用数据注释来格式化从SQL数据库获取的日期。我假设您正在使用EF6;如果没有,您可以在SSMS中将字段更改为varchar,并将日期存储为字符串
第二,我不清楚,但是如果您希望SQL DB列是可选的,您可以使用可选的数据注释来实现这一点。您的一个问题的答案如下: 您可以使用数据注释来格式化从SQL数据库获取的日期。我假设您正在使用EF6;如果没有,您可以在SSMS中将字段更改为varchar,并将日期存储为字符串
第二,我不清楚,但是如果您希望SQL DB列是可选的,那么可以使用可选的数据注释。
if(creationDateTextbox.Text!=null&&creationDateTextbox.Text!=”)
可以简化为if(String.IsNullOrEmpty(creationDateTextbox.Text)
当有疑问时,将其存储为刻度或dbI中最小的整数完整时间。我解决了第一个问题。我在存储数据时使用calendarextender将其格式化为MM dd yyyy,现在从DB获取数据时,它给出了相同的格式。但是,第二个问题仍然存在。如果其中一个日期不正确,我无法运行代码由用户选择。if(creationDateTextbox.Text!=null&&creationDateTextbox.Text!=“”)
可以简化为if(String.IsNullOrEmpty(creationDateTextbox.Text)
当有疑问时,将其存储为刻度或dbI中最小的整数完整时间。我解决了第一个问题。我在存储数据时使用calendarextender将其格式化为MM dd yyyy,现在从DB获取数据时,它给出了相同的格式。但是,第二个问题仍然存在。如果其中一个日期不正确,我无法运行代码由用户选择。如果用户没有为其中一个日期字段选择日期,则我的整个代码不起作用(因为我假设在SQL Server中datetime不能为空)。据我所知,您可以在SQL Server中使任何字段为空。您也可以在EF6中这样做。我敢打赌您的.NET应用程序正在运行,而不是SQL事务。您是否有错误消息,并且是否使用断点查找应用程序失败的代码行?我对其进行了测试,空日期字段是问题所在。不知怎的,SQL Server没有接受t null datetime列。如果用户没有为其中一个日期字段选择日期,则我的整个代码不起作用(因为我假设datetime在SQL Server中不能为空)。据我所知,您可以在SQL Server中使任何字段为空。您也可以在EF6中这样做。我敢打赌您的.NET应用程序正在运行,而不是SQL事务。您是否有错误消息,并且是否使用断点查找应用程序失败的代码行?我对其进行了测试,空日期字段是问题所在。不知怎的,SQL Server没有接受t空日期时间列。