2014-10-08 23 views
2

出于某种原因,下面的查询返回相同的结果,即使他们不应该的SQL Server 2014故障与转换功能

SELECT CONVERT(DATE, GETDATE(),101) 
SELECT CONVERT(DATE, GETDATE(),102) 
SELECT CONVERT(DATE, GETDATE(),103) 
SELECT CONVERT(DATE, GETDATE(),104) 
SELECT CONVERT(DATE, GETDATE(),105)-- Ad Infinitum (Tested up to 140) 

结果

2014-10-07 

万一今天的日期是7十月2014

技术上我在美国英语安装了SQL Server 2014和尝试使用

set dateformat dmy 

去改变它,但我不知道它是否取得了差或没有。

我搞砸了我的安装,我应该修复它,卸载并重新安装,完全格式化我的机器还是不相关。

发布第一个问题,我相信我遵循规则,因为我理解他们,如果我犯了一个错误,请告诉我。

编辑:

SELECT CAST (GETDATE() AS DATE) 

具有相同的效果。

+0

OK - 但你不能说什么你** **寻找的 - 什么输出你* *想要**?你有没有看过SQL Server 2014新的['FORMAT'](http://msdn.microsoft.com/en-us/library/hh213505.aspx)函数? – 2014-10-08 05:14:39

+0

我猜你已经误解了日期(和日期时间)如何存储在SQL Server(以及几乎任何其他编程语言) - 他们没有附加到他们的某种格式信息 - 他们只是日期信息。您看到的*字符串*是当您要求工具(如管理工作室)*显示*日期信息时发生的情况。但是不要混淆管理工作室应用的字符串格式与存储在“日期”列或变量中的实际* data *。 – 2014-10-08 06:56:45

+0

如果我不够清楚,我很抱歉,我的目标是获得除了我所得到的结果之外的任何结果,谢谢您指出我的错误。 – 2014-10-08 06:59:38

回答

1

样式只在输出类型是文字样式时才重要,即varcharnvarchar。你要做的是将datetime转换为日期(结果不依赖于样式),然后允许客户端应用程序显示它,但它喜欢。

在下面的例子中,然而,差异是明显:

select convert(varchar, cast(getdate() as date), 101); 
select convert(varchar, cast(getdate() as date), 102); 
select convert(varchar, cast(getdate() as date), 103); 
select convert(varchar, cast(getdate() as date), 104); 
1

您需要CONVERT函数使用VARCHAR代替DATE的。如下图所示:

SELECT CONVERT(varchar, GETDATE(),101) 
SELECT CONVERT(varchar, GETDATE(),102) 
SELECT CONVERT(varchar, GETDATE(),103) 
SELECT CONVERT(varchar, GETDATE(),104) 
SELECT CONVERT(varchar, GETDATE(),105) 

此外,检查出下面的链接是相同的: Convert Date format into DD/MMM/YYYY format in SQL Server