[英]C# Mysql datareader - how to get other coloumn using 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.