我想将数字转换为月份名称,取决于语言。例如:
怎么做?我的目的是转换为我的国家语言,即BAHASA MALAYSIA(JANUARI,FEBRUARI,MAC ... disember)。
答案 0 :(得分:3)
您无法以这种方式在SQL Server中本地化:每个查询可以使用一种语言 此语言设置是DATENAME使用的
因此,除非您需要大量的查找表(每种语言一个),否则请在客户端上执行此操作。
DATENAME对某些语言也不可靠。见DATENAME(MONTH,GETADATE()) is returning numeric value of the month as '09'
SQL Server 2012通过FORMAT添加了一些文化设置,但您必须将其传递到SQL Server。就像我说的那样,在客户端做到这一点。
编辑:
通过SET LANGUAGE在SQL Server 2005中不支持Indonesian。
因此,对于一种语言,您需要一个CASE
CASE DATEPART(month, GETDATE())
WHEN 1 THEN 'januari '
WHEN 2 THEN '...'
...
END
否则,SET LANGUAGE或在客户端执行
答案 1 :(得分:1)
在我看来,如果你能避免本地化,就不应该在服务器/业务逻辑层面上进行本地化。因此,我会将存储过程中的日期/月份作为DATETIME
或INT
返回,并在处理数据的客户端中将此信息本地化。
答案 2 :(得分:0)
我不知道如何为您的数据库正确编写它。主要想法是:
result = to_char(date, MM)
result = REPLACE('1', "JANUARI", result)
result = REPLACE('2', "FEBRUARI", result)
....
至少在Oracle中,它可以在没有存储过程的情况下编写