1

私はMySQLとC#が初めてです。

データ型 Date の列に特定の値を格納しました。日付だけを保存して、時刻を保存したくありませんでした。phpMyAdmin または MySql コマンドラインを使用してこれらの値を表示すると、次の形式で表示されます。

YYYY-MM-DD

ただし、これらの値を Web アプリケーションで取得すると、次の形式で表示されます。

YYYY-MM-DD HH:MM (時刻は具体的には 12:00 です)。

なぜこれが起こるのですか?どうすればこれを防ぐことができますか?

4

3 に答える 3

2

C# に日付フィールドを格納するときは、DateTime オブジェクトを使用します。このオブジェクトでは、時刻の部分を指定しない場合、グローバリゼーションに依存するデフォルト値が設定されます。

ここでDateTime の仕組みを学ぶことができます

于 2013-09-01T16:53:21.063 に答える
1

を使用して、データを取得するときに日付を好きな形式に変換できますdate_format()

select date_format(datecol, '%Y-%m-%d')

これは、値を文字列として返します。

于 2013-09-01T16:59:17.703 に答える
0

値を mysql から文字列として取得しないでください。なんで?日付を追加するなど、その値に対して操作を行う必要がある場合は、DateTime再度解析する必要があるためです。文字列の解析は遅くなる可能性があり、日付に関しては、mm/dd/yyyy および dd/mm/yyyy 形式の誤解などのエラーが発生しやすくなります。

あなたが抱えている問題は、.NET には型だけがないということですDate。型しかありませんDateTime。そのため、MySQLDATEタイプをロードするDateTimeと、時間部分が真夜中に設定された が取得されます。

結果の出力方法を除いて、それには直接的な問題はありません。パラメータなしで呼び出す.ToString()か、暗黙的に文字列として使用すると、完全な日付と時刻の結果が得られます。必要なフォーマットを示すパラメータを指定するだけです。

パラメータを指定しないと、General"G"形式が取得されます。これについては、こちらのドキュメントで説明されています。

言い換えると:

yourDateTime.ToString() == yourDateTime.ToString("G")

利用可能な他のすべての形式については、こちらこちらをご覧ください。

特に、日付だけが必要な場合は、おそらく次のようにする必要があります。

yourDateTime.ToString("d")

あなたのコメントに基づいて、代わりにこれを行う必要があります:

MySQL クエリ:

SELECT Gbstartdate FROM TblGbDef

C#:

DateTime gb_start_date = (DateTime) datareader[0];
于 2013-09-02T02:56:50.863 に答える