将日期格式更改为现有的表sql server

时间:2015-12-02 11:21:19

标签: sql-server datetime

我有一个日期时间值,其格式为:' 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;

3 个答案:

答案 0 :(得分:2)

cmd.CommandText =
    "SELECT CONVERT(VARCHAR(10), DATEDIFF(day, '" + sStartDate + "','" + sEndDate + "')+1, 103)";

MSDN

答案 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];