【问题标题】:How to cast DB2 Timestamp to vb.net date?如何将 DB2 时间戳转换为 vb.net 日期?
【发布时间】:2020-08-25 21:13:38
【问题描述】:

当我使用 DB2 SQL 填充我的 vb.net gridview 时,它显示 DB2 Timestamp 为:

2020-08-25-14.59.11.000000

^ 将其转换为 vb.net 日期的最干净的方法是什么? FWIW,这行得通:

Dim mydate As Date = CDate("2020-08-25 14:59:11.000000")

但是,14:59:11 中的冒号不存在,我正在使用的字符串有 14.59.11

非常感谢任何帮助。

编辑: 按照要求, screenshot of what data looks like when queried in AS400

编辑2:

Dim strSelect As String = "" &
"SELECT SUBMITTIME " &
"FROM MYTABLE " &
"WHERE EFYEAR=" & Now.Year & " AND EFMONTH=" & Now.Month

Dim dt As DataTable = SQL.Get_DataTable(strSelect)
grv.DataSource = dt
grv.DataBind()

Get_DataTable 只是使用 OleDbConnection、OleDbCommand、OleDbDataAdapter 等来填充 DataTable。

【问题讨论】:

  • 请显示您的 DB2 查询工具选择了同一行的屏幕截图
  • @CaiusJard 刚刚添加
  • VB 是否选择它作为字符串?显示填充网格的代码?

标签: vb.net date parsing db2 format


【解决方案1】:

您不能将某些东西转换为它不是的类型。转换的全部意义在于您不会更改对象,而是更改访问对象的方式。如果您要更改对象,则它是转换,而不是强制转换。

如果您想转换某些内容,那么第一步就是要知道您要转换的内容。如果您要从已知格式的String 转换为DateTime,那么您将使用Date.ParseExact

如果数据在 DataTable 中,请添加具有适当数据类型的新列,在循环中进行转换,然后,如果合适,删除原始列。

myDataTable.Columns.Add("DataColumn", GetType(Date))

For Each row As DataRow In myDataTable.Rows
    row("DateColumn") = Date.ParseExact(CStr(row("TextColumn")), "yyyy-MM-dd-HH.mm.ss.ffffff", Nothing)
Next

myDataTable.Columns.Remove(myDataTable.Columns("TextColumn"))

【讨论】:

  • 感谢您的代码。 DataTable 循环可能很快就会派上用场,这就是我用来显示的内容:<ItemTemplate> <asp:Label ID="lblSUBMITTIME" runat="server" Text='<%# Date.ParseExact(Eval("SUBMITTIME"), "yyyy-MM-dd-HH.mm.ss.ffffff", Nothing) %>'></asp:Label> </ItemTemplate>
猜你喜欢
  • 2019-08-24
  • 2012-04-10
  • 2016-11-26
  • 2019-04-03
  • 1970-01-01
  • 2020-10-19
  • 2021-03-31
相关资源
最近更新 更多