我有一个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中使用脚本组件。
帮助???? :(
答案 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")