2015-11-23 67 views
1

是否可以通過特定模式更改格式日期?我需要創建一個具有兩個參數的函數。第一個是日期和第二個是模式。我需要轉換更多日期變體。目標這個功能是改變美國和歐洲的日期格式。T-SQL格式日期格式

例如,我需要轉換

歐盟:DD:MM:YYYY HH:MM:SS 到 美國:MM:DD:YYYY HH:mm:ss的

在另一頁,我需要改變

歐盟:DD/MM/YYYY 到 美國:MM/DD/YYYY

,我有幾個變種旁邊轉換

,我想提出一個類似的功能

Formater(euDate, pattern) 
BEGIN 
.... 

RETURN usDate 

我的生產服務器是不幸的是SQL Server 2005和不支持的功能FORMAT()。而功能CONVERT()不支持某些日期變體,我需要轉換。因此,在我目前的解決方案中,我將歐盟日期解析爲個別部分(@day = day(@euDate), @month, @year, ...)並將它們加入新字符串中。我將它與模式中的輸入參數進行比較,並返回與模式相同的CASE。我想讓這個功能變得一般而簡單。

謝謝您的建議。

+0

你可以使用CLR程序集嗎?那些在2005年的工作,並從我記得,SQL Server的新版本的FORMAT()方法的基本上只是一個包裝標準的通用語言運行時格式化方法。 –

回答

1

你幾乎可以肯定可以使用convert函數。你可以閱讀更多關於所有選項here

如果您需要某種模糊的不變量,請查看this blog by Anubhav Goyal

+0

我相信downvote的出現是因爲這個問題指定'CONVERT'函數不能處理所有的變體,儘管這個斷言並沒有帶有例子。我希望看到不能與'CONVERT'一起使用的變體的例子,以查看我們是否可以找出解決方案。 –

+0

@BrianPayne這很奇怪,因爲OP需要的情況出現了。而且,我提供的第二個鏈接具有基本上可以用來構建任何需要的功能。我編輯我的答案說盡可能多。 –

+0

感謝您的建議,我不downvote您的答案,但例如,我有一個格式dd.MM.yyyy時間和這種格式我找不到轉換功能。 – tomas