VB.NET - 更改数据库DateTimes的样式/格式?

时间:2012-09-14 12:30:15

标签: database vb.net datetime ssis

我有一个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中使用脚本组件。

帮助???? :(

1 个答案:

答案 0 :(得分: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")