[英]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.