SQL Server日期转换默认格式
SQL Server从何处获取返回结果时使用的默认日期格式:SQL Server日期转换默认格式,sql,sql-server,entity-framework,Sql,Sql Server,Entity Framework,SQL Server从何处获取返回结果时使用的默认日期格式: CAST(LastLogin AS nvarchar(max)) 我想更改此默认格式。我无法使用CONVERT(),因为此查询是由实体框架生成的 我得到: 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. 我已经查看了服务器上的区域设
CAST(LastLogin AS nvarchar(max))
我想更改此默认格式。我无法使用CONVERT(),因为此查询是由实体框架生成的
我得到:
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问题感兴趣:我认为一个好方法是尝试解决导致生成
CAST
的根本问题。最好将DATE/DATETIME/DATETIME2
值检索到C#DATETIME
属性中,然后基于所需的格式/区域性
[稍后编辑]
我认为时间的默认字符串表示形式取决于实例语言及其默认日期表示形式。首先可以在实例属性中看到:
第二个在CAST/CONVERT
文档中指定:
datetime和smalldatetime的默认值-mon-dd-yyyy hh:MIM(或PM)
可以使用和/或更改会话的语言和日期时间格式,但后者似乎只影响datetime
s的解析方式,而不影响CAST显示格式化日期的方式
我想更改此默认格式
简单地说:你不能。
CAST(LastLogin AS nvarchar(max))
相当于
CONVERT(nvarchar(max), LastLogin)
相当于
CONVERT(nvarchar(max), LastLogin, 0)
返回以下格式:
mon dd yyyy hh:miAM (or PM)
(正如其他人已经注意到的,这可能是一个问题,您可能想开始一个关于您所面临的实际问题的问题。)如果使用EF,您为什么要转换为字符串?为什么不在客户端这样做呢?您不能告诉entity framework以
DateTime
的形式返回值吗?然后,您可以使用.NET格式选项对日期进行格式设置。不要使用sql server,但大多数DBMS平台都有某种格式功能,您可以指定用于将日期/时间字段转换为字符串的格式。您在哪里看到这种格式?在SQL或.NET中?@DStanley SET DateFormat对强制转换结果没有影响。我在SQL中得到了这个结果。谢谢Alexi,这将是下一步。这个问题很简单-SQL server从何处获取此默认日期格式。