私はibatisとC#を使用しています。フィールドの1つとしてCreatedDateを持つ選択クエリから結果を取得します。 MysqlのCreatedDateのデータ型は日付です。選択クエリの結果セットをIlist <DeliveryClass>に割り当てます。
ここでは、DateTimeとしてのDeliveryClass CreatedDateです。アプリケーションを実行すると、MySQLの日付/時刻値をSystem.DateTimeに変換できませんを取得します。何が問題でしょうか?
形式の問題、実際にはmysqlには日付/時刻データ型の異なる形式(yyyy-mm-dd)があり、この問題を解決するには、ここから.netのmysqlコネクタライブラリを使用します http:// dev .mysql.com/downloads/connector/net / MysqlDateTimeと呼ばれる日付/時刻の他のデータ型を提供します
または、DATE_FORMAT(date、format)を使用してSQLステートメントで日付/時刻データをフォーマットできます。ここから詳細を取得できます http://dev.mysql.com/doc/refman/5.1/en/date -and-time-functions.html#function_date-format
しかし、これはお勧めしません。これは、日付/時刻データ型の能力を失うため(たとえば、比較できないため)、これを文字列に変換するためですが、レポートで役立つと思います
_MySqlConnection connect = new MySqlConnection("server=localhost; database=luttop; user=root; password=1234; pooling = false; convert zero datetime=True");
_
_convert zero datetime=True
_を接続文字列に追加すると、_0000-00-00
_の日付値がDateTime.MinValue()
に自動的に変換されます。
それが解決しました
接続文字列に「convert zero datetime = True」を追加すると、問題が解決しました。
<connectionStrings> <add name="MyContext" connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convert zero datetime=True" providerName="MySql.Data.MySqlClient" /> </connectionStrings>
PSについて
列のデフォルト値を0000-00-00 00:00:00
ではなくnull
データとして設定することで問題を解決しました:
update table set date = null
DateTimeオブジェクトの範囲外である可能性があります。数回見たことがあります。列の代わりに現在の日付を返すようにsqlを変更してみて、問題がないことを確認してください。
MySqlデータベースに追加した接続文字列を使用して、簡単な変更を行う必要があります。 i.eCONVERT ZERO DATETIME = TRUE
<add name="NAMEOFYOURCONNECTIONSTRING" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID(i.e User ID for login Database);Pwd=PASSWORD(i.e User Password for login Database);persistsecurityinfo=True;database=NAMEOFDATABASE;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>
これは私のために働きました:
SELECT
IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate
FROM MyTable AS tb
うまくいく1つのことは、読者の行動を変えることです。私が書いたときに私はこの問題を抱えていました
string myvar = reader.GetString(0);
それから私はこれを書いていた
object myvar = reader.GetValue(0);
そして、これ以上のエラーはありません。