web-dev-qa-db-ja.com

MySQLの日付/時刻値をSystem.DateTimeに変換できません

私はibatisとC#を使用しています。フィールドの1つとしてCreatedDateを持つ選択クエリから結果を取得します。 MysqlのCreatedDateのデータ型は日付です。選択クエリの結果セットをIlist <DeliveryClass>に割り当てます。

ここでは、DateTimeとしてのDeliveryClass CreatedDateです。アプリケーションを実行すると、MySQLの日付/時刻値をSystem.DateTimeに変換できませんを取得します。何が問題でしょうか?

14
Gopi

形式の問題、実際には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

しかし、これはお勧めしません。これは、日付/時刻データ型の能力を失うため(たとえば、比較できないため)、これを文字列に変換するためですが、レポートで役立つと思います

6
Amgad Fahmi
_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()に自動的に変換されます。

それが解決しました

79
levefdsa

接続文字列に「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について

9
psantos

列のデフォルト値を0000-00-00 00:00:00ではなくnullデータとして設定することで問題を解決しました:

update table set date = null
6
user693858

DateTimeオブジェクトの範囲外である可能性があります。数回見たことがあります。列の代わりに現在の日付を返すようにsqlを変更してみて、問題がないことを確認してください。

2
Dan

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"/>
1
Rahul Sharma

これは私のために働きました:

SELECT 
    IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate
FROM MyTable AS tb
0
Leacam

うまくいく1つのことは、読者の行動を変えることです。私が書いたときに私はこの問題を抱えていました

string myvar = reader.GetString(0);

それから私はこれを書いていた

object myvar = reader.GetValue(0);

そして、これ以上のエラーはありません。

0
Romain BARTOLO