0

我有一个 SSIS 脚本组件,它需要在导出数据前不久运行一些 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 中使用脚本组件。

帮助????:(

4

1 回答 1

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")
于 2012-09-14T13:12:38.190 回答