2012-09-14 139 views
0

我有一個SSIS腳本組件需要在導出數據前不久運行一些VB.NET代碼。VB.NET - 更改數據庫日期時間的樣式/格式?

我正在喂這個腳本組件每行的時間戳列。 (數據類型DT_DBTIMESTAMP)

日期的輸入方式如下:2012-09-12 16:34:12

我需要的VB.NET代碼來改變這種做法,它顯示的格式爲:09/12/2012 04:34:12 PM

的兩個關鍵點是如果所有值都是單個數字,則需要用零填充所有值,並且所有時間值需要使用AM/PM以12小時格式填充。總之,風格必須遵循:{0:MM/dd/yyyy hh:mm:ss tt}

不幸的是,我有非常有限的VB.NET技能,我還沒有找到這樣的SO或MSDN的例子。從我的搜索,看來我可能能夠創建一個新的DateTime對象樣式,然後使用自定義的日期格式或什麼?我不能爲了我的生活找出在這裏做什麼。

從腳本組件自動生成的代碼如下:

Imports System 
Imports System.Data 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper 

Public Class ScriptMain 
    Inherits UserComponent 

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
     ' 
     ' Add your code here 
     ' 
    End Sub 

End Class 

所以我可以做類似:

String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", Row.[DateTimeColumn].toString()) 

我不知道......這裏完全喪失。第一次真的在SSIS或VB.NET中使用腳本組件。

幫助???? :(

+1

這聽起來像你正在做的事情錯了,當你保存回柱如果你這樣做的權利,你**從來沒有弄亂絃樂**。棒完全使用DateTime類型,事情會更容易。 –

回答

1

如果你得到的數據作爲Date對象,那麼你可以簡單地調用ToString方法,並傳遞格式字符串,例如:

Dim d As Date = columnValue 
Dim formatted As String = d.ToString("MM/dd/yyyy hh:mm:ss tt") 

但是,如果你得到的日期作爲字符串,那麼你需要首先將其解析爲Date對象格式化之前:

Dim s As String = columnValue 
Dim d As Date = Date.ParseExact(s, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture) 
Dim formatted As String = d.ToString("MM/dd/yyyy hh:mm:ss tt") 
+0

先生,你是男人之神。儘管如此,非常感謝你!由於我將列值作爲日期獲取,因此我只需使用第一部分代碼,然後將「格式化」保存回列中。哇,非常感謝,非常感謝。 – Oryx