2012-02-22 71 views
1

我想將數字轉換爲月份名稱,依賴於語言。例如:SQL語言相關轉換(數字到月份名稱)

  • 1 = januari在中國語言印度尼西亞語言
  • 1 = 一月
  • 1 = gennaio用意大利語言。

如何做到這一點?我的目的是轉換爲我的國家語言,即BAHASA馬來西亞(JANUARI,FEBRUARI,MAC ...帝國)。

+0

我有一個想法,就是如果一個月= 1個然後設置MONTHNAME =「Januari」否則,如果一個月= 2,則set monthname ='Februari'。但我覺得這是個壞主意。所以任何人都有更好的想法呢? thx – 2012-02-22 08:13:17

+0

什麼是您的編程語言? – Pankaj 2012-02-22 08:34:41

回答

1

在我看來,如果你能避免它,本地化不應該在服務器/業務邏輯層上完成。因此,我會將存儲過程中的日期/月份作爲DATETIMEINT返回,並將此信息本地化到處理數據的客戶端中。

+0

我認爲我的問題誤導了我,如果我只是在印度尼西亞語中將januari顯示爲1月份? – 2012-02-22 08:27:24

+0

@Elynn:請描述你想在哪裏顯示本地化月份名稱。你的客戶調用那個SP是什麼? – Gene 2012-02-22 08:31:59

3

你不能在SQL Server本地化以這種方式:您可以使用每個查詢
一種語言,這種語言的設置是什麼DATENAME使用

所以,除非你想查找表的數量巨大(每一個語言),然後在客戶端執行此操作。

對於某些語言,DATENAME也不可靠。請參閱DATENAME(MONTH,GETADATE()) is returning numeric value of the month as '09'

SQL Server 2012通過FORMAT添加了一些文化設置,但您必須將其傳遞到SQL Server。就像我說的,在客戶端做這件事。

編輯:

印度尼西亞沒有在SQL Server 2005通過設置語言支持。

所以,對於這個一個語言你需要一個CASE

​​3210

否則,設置語言或做在客戶端

+0

我認爲我的問題誤導了我,如果我只是在印度尼西亞語中將januari顯示爲一月份? – 2012-02-22 08:27:12

+0

@ElynnChia:剛纔你提到過意大利語......無論如何答案都已更新 – gbn 2012-02-22 08:29:29

0

我不知道怎麼寫正確地爲您的數據庫類型。其主要思想是:

result = to_char(date, MM) 
result = REPLACE('1', "JANUARI", result) 
result = REPLACE('2', "FEBRUARI", result) 
.... 

並且至少在甲骨文它可以在不存儲過程編寫

相關問題