我有一个日期时间值,其格式为:' 2015-03-15 00:00:00.000'。如何将其转换为< dd / MM / yyyy'中的日期时间值?而是格式化并将其保存在SQL Server 2012数据库中?
这是我的C#代码:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT Convert(nvarchar(max), DATEDIFF(day, '" + sStartDate + "','" + sEndDate + "')+1)";
cmd.CommandType = CommandType.Text;
答案 0 :(得分:2)
cmd.CommandText =
"SELECT CONVERT(VARCHAR(10), DATEDIFF(day, '" + sStartDate + "','" + sEndDate + "')+1, 103)";
答案 1 :(得分:0)
您可以轻松地将列的数据类型从datetime更改为char(24)/ varchar(24)。然后,您可以使用以下方法将值的格式更改为所需的格式。
<ul>
代码分析:
首先,我们使用DATEPART内置函数获取日期的DAY部分。由于此值可能有一个或两个字符长度,因此我们在该值的第一个字符处添加了一个常量“0”,然后从中删除最后两个字符。因此,例如,如果DAY等于24,那么在它开始后添加'0'后它将变为024然后我们切掉最后两个字符,即24.如果DAY等于9,那么我们在它的开头加一个'0'。所以现在我们有了09,并且通过削减最后2个字符我们再次拥有09。这可以保证dd和MM格式。
请注意,如果数据库中的列具有datetime或datetime2数据类型,那么您需要以不同的方式解决此问题。阅读更多HERE
答案 2 :(得分:0)
当您在数据库中存储日期信息时,您应该使用您的数据库 date
类型。日期是一个日期,而不是一些任意格式。这样做可以让您安全地依赖SQL Server内置的所有漂亮日期函数,并从一整类问题中解脱出来。
如果您发现自己不断将日期重新格式化为字符串以进行报告,则将转换逻辑放在视图/ TVF中,并将该对象用作报告源。
如果你唯一的问题是将日期时间显示为日期,那么你可以使用:
select Convert(nvarchar(10), SysDateTime(), 103) as [dd/mm/yyyy];