我从 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/