2017-10-13 84 views
0

我有SQL Server 2014法语。mssql转换(日期)问题

我想知道我怎么能转换为

  1. 日期,日期时间列,以DD-MON-YYYY字符串[13-OCT-2017]
  2. DD-MON-YYYY字符串[ 13-OCT-2017]至YYYYMMDD字符串[20171013]
  3. DD-MON-YYYY字符串[13-OCT-2017]迄今为止,日期时间值在一MSSQL DB我会做

一般:

select Upper(replace(CONVERT(NVARCHAR, COLUMN_NAME, 106), ' ', '-')) 

但是上面的查询获取我是这样的:

31-AOÛT-2017 instead of 31-AUG-2017 

&从DD-MON-YYYY字符串转换为年月日:

convert(date, Column_Name, 102),'-','') 

它不在这个DB工作。

在此先感谢。

+2

我不知道你为什么要这样做?你能解释你的用例吗?我问的原因是日期的格式是表示层问题,而不是数据存储问题。如果你要保存商店的日期,他们应该以类型date/datetime2(或datetime for legacy)的参数形式“发送”,而不是以字符串形式发送。如果你正在检索date/datetime2值,那么将它们转换为字符串在表示层(尽可能晚的调用堆栈) – Igor

+0

@Igor不同的对象创建不同的人创建不同的请求输入日期不同的格式我同意设计不高效,但我真的需要转换日期以及显示,它也转换也影响查询输出的数据类型。例如,当我提到字符串我的意思是char,varchar格式。 – pOrinG

回答

0

通常情况下,您会让客户端应用程序根据应用程序设置的首选项来使用结果集格式化事物。你为什么认为你,开发者应该强制使用英文而不是法文(或任何其他语言)的月份名称?

但是我们知道你很早就通过了这个决定。您可以使用格式化功能来执行此操作。有一个正是这个例子在文档here

0

这是一个语言问题。手动设置交易的语言:

SET LANGUAGE= English 
SELECT Upper(replace(CONVERT(NVARCHAR, COLUMN_NAME, 106), ' ', '-')) 
GO 
+0

嗨,约翰,感谢您的评论,但有没有什么办法我可以在不添加SET LANGUAGE = English参数的情况下执行此操作,并且只使用Select语句。 – pOrinG