【问题标题】:VB: Formatting Mysql TimestampVB:格式化Mysql时间戳
【发布时间】:2011-10-03 19:37:57
【问题描述】:

我不知道如何在 VB 中格式化时间戳,所以它以这种格式插入到 MYSQL 数据库中:

YYYY-MM-DD 00:00:00

我试过了:

Dim timestamp As Date = TimeValue(Now)

它将其格式化为0001-01-01 12:33:38 -- 如果yyyy-mm-dd 实际上是正确的日期,这将是正确的。

【问题讨论】:

  • 设置 MySQL 查询以接受任何 VB 提供的字符串,并使用 STR_TO_DATE 将值转换为 MySQL DATETIME 可能更容易
  • 我还做了一个 timestamp.ToString 所以它可以是一个字符串,在我这样做之后,我得到了问题中的输出。我会按照你的建议写吗?
  • 在 VBA 中 - Format(Now,"yyyy-MM-dd HH:mm:ss")

标签: mysql sql vb.net visual-studio


【解决方案1】:

你没有抓住重点。

sql 数据库中的真实时间戳从不格式为YYYY-MM-DD 00:00:00。这就是它们在查询或数据窗口中的显示方式。这些值实际上存储为通常不可读的二进制格式,尽管 mysql 可能仍使用 unix 时间。

关键是您甚至不需要确定实际格式是什么。这应该由您的数据库连接提供商处理,而不是自己格式化。从 VB.Net 为 mysql 正确插入/更新数据库时间戳应该如下所示:

Dim sql As String = "UPDATE `Table` Set MyColumn= @DateValue WHERE ID= @ID"
Using cn As New MySqlConnection("Your connection string here"), _
      cmd As New MySqlCommand(sql, cn)

    cmd.Parameters.Add("@DateValue", MySqlDbType.Datetime).Value = Now
    cmd.Parameters.Add("@ID", MySqlDbType.Int32).Value = 12345

    cn.Open()
    cmd.ExecuteNonQuery()
End Using

无需格式化。你也可以这样写查询:

Dim sql As String = "UPDATE `Table` Set MyColumn= current_timestamp WHERE ID= @ID"

但如果你真的坚持要创建字符串,它会是这样的:

Now().ToString("yyyy-MM-dd HH:mm:ss")

使用此处提供的格式字符串说明:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多