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
答案 0 :(得分:4)
我认为一种好方法是尝试解决导致CAST
生成的潜在问题。最好将DATE/DATETIME/DATETIME2
值检索到C# DateTime
属性,然后根据所需的格式/文化检索apply the formatting。
[稍后编辑] 我认为时间的默认字符串表示取决于实例语言及其默认日期表示。首先可以在实例属性中看到:
第二个在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,你可能想要就你面临的真正问题提出一个问题。)