1. ホーム

プロジェクト - MySQLの日付/時刻の値をSystemに変換することができません。

2022-02-28 20:15:19

あるプロジェクトで初めて英語全体を調べて問題を解決したこと、それをブログに書いたことがマイルストーンになりました。

                                                                                の序文---。

<スパン

<スパン [シナリオの再現

<スパン         最近のプロジェクトの中で、多くの バグ は、写真の通り、その一つです。


<スパン <スパン <スパン の予備知識があれば マイスル "です。

世界で最も利用されているオープンソースデータベース "

オープンソースのコードや情報がたくさんあるので、いくつかの英語のフォーラムをクリックして見てみたんです。

<スパン

<スパン [問題の原因】をご覧ください。]

<スパン        情報確認後 これは、データテーブルの日付列のデータ値があるため、当然のことながら、データを挿入すると、TimeSpanフィールドが自動的に更新されない、"0000-00-00"すぐそこに、だから、今回は基本的に自分で独立して問題を解決することができます。

<スパン

<スパン [解答】をご覧ください。]

<スパン      (1) この問題を解決するには、これらのデータをNULLに設定するか、接続文字列に "AllowZero Datetime=True" を設定してください。

<スパン        この図のように

コードは以下の通りです。

<connectionStrings> <add name="MyContext"connectionString="Datasource=localhost;Database=MyAppDb;Uid=root; Pwd=root;CHARSET=utf8;convertzero datetime=True" providerName="MySql.Data.MySqlClient" /></connectionStrings>


<スパン  原理:プログラム側のweb.configに、Zero Datetimeの形式をコードに渡すことができると記述されている場合、この方法ではVSはこの"0000-00-00"を時間および日付形式として扱います。


<スパン       ( <スパン 2 ) データベースにあるこのフィールドのデフォルト値を設定します。


<スパン コードは以下の通りです。

update table set date = null //Update the table so that the TimeSpan field defaults to null

原理:テーブルにデータを挿入する際、TimeSpanフィールドに値が渡されない場合、データベースには自動的に"null"値が入力されます。これにより、プログラムがデータベースのデータを読み込む際に、"0000-00-00"の型を認識しないためにエラーが報告されることはありません。

<スパン        解析する。この方法でエラーは回避できるが、私としてはTimeSpanの存在意義が失われるので、TimeSpanに値を取得させた方が良い。


<スパン       ( <スパン 3 ) フォーマットの面では、実際に マイスル は、その 接続 リンクは、日付を渡す / 時間に関しては、様々なフォーマットがあります( yyyy-mm-dd ) をご覧ください。 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html  (外国語のmysql公式サイト)

<スパン

       私の解決策:MySQLデータテーブルのデータを挿入するときにTimeSpanのために直接現在の時刻を渡し、TimeSpanフィールドの両方が動作し、"MySQLの日付/時刻値をSystem.DateTimeに変換できない" mysql日付形式エラーなのでこれを避けることができますようにします。



<スパン        まとめ:小さな問題ではありましたが、海外のソースを調べて解決したことは、私のプログラミング人生において大きな一歩となりました。

<スパン

<スパン

<スパン