0

私のC#プログラムは、データベースから日時フィールドを選択し、次のようなデータを返します:

21/06/2012 4:11:48 p.m.

ただし、この方法では保存されません (2012/06/21 15:19:10:000 のように保存されます)。私のロケールは英語/ニュージーランドに設定されています

しかし、データベースに保存しようとすると

ISDATE()SQL関数はその形式が好きではなく、NULLを返すだけです. SQL または C# で時間形式を設定するオプションはありますか? SQLまたはC#で「pm」を入れているのは何ですか? (ちなみに、「PM」の代わりに)

問題の要約

最新の関連リンクを見る

4

4 に答える 4

3

データベースにテキストとして保存するべきではありません。たとえば、などの関連するデータ型を使用し、SQLパラメータを使用して.NETからデータベースに値DATETIMEを渡す必要があります。DateTime適切なデータ型を使用している場合、値は実際には「2012/06/21 15:19:10:000」として保存されません。これは、SQL Server Studioなどでの表示方法かもしれませんが、それが生のストレージ形式であるとは限りません。

論理的には、日付/時刻の形式は、数値の10が「10」(10進数)と「A」(16進数)である以上のものではありません。できる限り文字列変換を避けてください。そうすれば、あなたの生活は楽になります。

于 2012-06-21T16:42:56.207 に答える
2

注: 文字列ではなくデータベースに DateTime を適切に保存することに関する Jon の応答を参照してください。

C# 文字列フォーマットの場合:

DateTime オブジェクトは、.ToString() 関数を使用してさまざまな形式で出力できます。

以下のリンクをご覧ください

たとえば、次のようになります。

DateTime.Now.ToString("dd/MM/yyyy h:mm:ss");

これは、質問にある形式で出力されます。

于 2012-06-21T16:50:33.373 に答える
1

ほとんどのSQL日時形式は、C#で認識できる必要がありますDateTime.Parse(youSQLDatetimeVariable)。あなたの場合に何が起こっているのかは少し奇妙だと思います。

他の人が言ったように、あなたは本当にすべきではありませんが、DateTimeをさまざまな形式に変換する方法は次のとおりです。

SELECT Convert(VARCHAR, MyDateTimeField, 112) from MyTable

その番号(112)は、Varcharとして表示されるDateTime形式を示します。すべての形式の詳細については、http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-inを参照してください 。 -sql-server-2005 /

または、C#コード内で

YourDatetimeVariable.ToString("MM-dd-yyyy") 

または、MM-月番号、dd-日番号、yyyy-年の引用符内で必要な形式。

于 2012-06-21T16:52:06.173 に答える
1

あなたの問題は、SQL の Set language 設定に関連していると思います。

この質問に似ています: SQL Server ISDATE() 関数 - 誰かがこれを説明できますか?

フォーマットに合わせて SQL 言語を設定できますか?

于 2012-06-21T16:44:37.913 に答える