mysql - 日期格式 .NET 到 mysql

标签 mysql vb.net date datetime

我从 mysql 中提取日期值并以本地使用的格式显示它们。见下文:

我有这个日期时间值 2012-11-01 08:00:00 ... yyyy-MM-dd HH:mm:ss

我需要它显示为 01-11-2012 08:00:00 ... dd-MM-yyyy HH:mm:ss

我可以像下面这样简单地做到这一点:

Dim dr As MySqlDataReader = cmd.ExecuteReader(sql)

If dr.Read()
    Dim mydate As DateTime = dr("date_column")

    txtDate.Text = mydate.ToString("dd-MM-yyyy") & " " & mydate.ToString("HH:mm:ss")
End If

这很好用,但我的问题是,如果我想从这个文本框中更新记录,我不能将这种格式用于日期,因为 mysql 提示错误(对象超出范围或其他)。

所以我现在需要做的是将其转换回 yyyy-MM-dd。这里的困难在于 .NET 会自动假定我的 dd 值应该是 MM 值,反之亦然。

这导致 01-11-2012 的值作为 11-01-2012 写入数据库。

如何重新格式化插入/更新到数据库的日期,同时保持此处使用的日期的完整性?

提前致谢

最佳答案

使用 parameterized query更新:

query = "UPDATE SomeTable SET date_column = @newDate WHERE record_id = @record_id"
conn = new SqlConnection("my connection string")

cmd = new SqlCommand(query, conn)
cmd.Parameters.Add("newDate", SqlDbType.DateTime).Value = new Date(txtDate.Text)
cmd.Parameters.Add("record_id", SqlDbType.Int).Value = record_id

'Rest of code to execute cmd

如果这不能正确解析 TextBox 中的日期,请事先使用以下方法解析它:

Date.ParseExact(txtDate.Text, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture)

此外,行:

txtDate.Text = mydate.ToString("dd-MM-yyyy") & " " & mydate.ToString("HH:mm:ss")

也可以写成:

txtDate.Text = mydate.ToString("dd-MM-yyyy HH:mm:ss")

这可能更容易阅读。

关于mysql - 日期格式 .NET 到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689827/

相关文章:

当 asp Button.Enabled = False 时禁用 CSS 类

vb.net - 两个定时器同时独立运行

java - 日期范围内的日期范围

mysql - 如何选择 >= 1 天前的行?

Java ResultSet 除了 sql 之外什么也没有得到 mysql 中的结果

mysql - ORDER BY 和 GROUP BY 这些结果在单个查询中

java - 不使用 int onebyte 将字符串写入 OutputStream

MySQL 命令 ASCII

vb.net - .NET - 非常奇怪的 NullReferenceException?

php - 生成最近两周的日期范围?