繁体   English   中英

使用C#DataReader时的时间戳格式不同

[英]Different format for timestamp when using c# datareader

我正在使用OdbcDataReader从mysql表读取时间戳。 当我查看表中的数据时,其格式为2013-09-12 11:11:09 但读者似乎是以12/09/2013 11:11:09的格式12/09/2013 11:11:09

然后,我尝试将其插入另一个mysql表,但收到错误:

第1行的'时间戳'的日期时间值不正确:'12 / 09/2013 11:11:09'

如何解决格式上的差异? 我应该以某种方式引用一些Unix时间戳值吗?

数据不应以任何文本格式出现在表格中。 这只是一个日期和时间。

将数据转换为字符串时,您会看到格式-应该尽量少用。 特别是,当您将数据插入到另一个表中时,根本不要使用格式化的值-您应该在参数化SQL中使用DateTime

基本上,除非您确实需要数据的字符串表示形式,否则应将其保留为“本地”表示形式(在这种情况下为DateTime )。 每当您进行文本转换时,这都是失败的机会。 日期和时间对于时区等来说足够困难,不会涉及无关的转换。

您如何看待表格中的数据? 我不熟悉MySQL的实现,但是使用Oracle和Sql Server的日期时间值以不可读的二进制格式存储,并通过查询工具转换为可读的时间戳。 MySQL可能正在做类似的事情。

尝试将其插入另一个mysql表

如果您在插入数据时关心格式,那么您所做的事情确实很糟糕 这强烈表明您使用的是易受sql注入攻击而不是参数化查询攻击的技术。 如果使用参数化查询,则直接将C#日期时间类型分配给查询参数值,而ADO.Net对象将处理所需的任何格式。 那时,您可以成功将DateTime.Parse()DateTime.TryParse()成功的任何内容变为查询的有效输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM