SQL Server日期CAST默认格式

时间:2016-02-08 20:51:14

标签: sql sql-server entity-framework

SQL Server从何处获取返回结果时使用的默认日期格式:

CAST(LastLogin AS nvarchar(max))

我想更改此默认格式。我不能使用CONVERT(),因为这个查询是由Entity Framework生成的。

我得到了:

Jun 22 2015  4:02PM
Jul 19 2015 10:02PM
Jan 30 2016  3:45PM
Jan 18 2016  2:56PM
Feb  4 2016 12:27PM
May  7 2015  9:30AM
etc.

我查看了服务器上的区域设置,但尚未将其设置为使用此日期格式。

如果对EF问题感兴趣:C# Generic .Contains() method implementing SqlFunctions.StringConvert in Entity Framework

2 个答案:

答案 0 :(得分:4)

我认为一种好方法是尝试解决导致CAST生成的潜在问题。最好将DATE/DATETIME/DATETIME2值检索到C# DateTime属性,然后根据所需的格式/文化检索apply the formatting

[稍后编辑] 我认为时间的默认字符串表示取决于实例语言及其默认日期表示。首先可以在实例属性中看到:

enter image description here

第二个在CAST/CONVERT文档中指定:

  

datetime和smalldatetime的默认值 - mon dd yyyy hh:miAM(或PM)

会话的语言和日期时间格式都可以使用SET LANGUAGE和/或SET DATEFORMAT进行更改,但后者似乎只会影响datetime的解析方式,而不会影响CAST的显示方式格式化的日期。

答案 1 :(得分:2)

  

我想更改此默认格式。

简单地说:你不能。

CAST(LastLogin AS nvarchar(max))

相当于

CONVERT(nvarchar(max), LastLogin)

相当于

CONVERT(nvarchar(max), LastLogin, 0)

其中is specified返回以下格式:

mon dd yyyy hh:miAM (or PM)

(正如其他人已经指出的那样,这可能是XY problem,你可能想要就你面临的真正问题提出一个问题。)