簡體   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