123

現在の日時形式を C# から保存し、それを SQL Server の日付形式に変換してクエリyyyy-MM-dd HH:mm:ssに使用できるようにしようとしています。UPDATE

これは私の最初のコードでした:

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");

日付の出力は問題ありませんが、時間は常に「12:00:00」であるため、コードを次のように変更しました。

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.TimeOfDay.ToString("HH:mm:ss");

このコンパイルエラーが発生しました:

FormatException が処理されませんでした

そして、解析する必要があることを提案しました。そこで、StackOverflow での調査に従って、コードにこれを実行しようとしました。

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.Parse.TimeOfDay.ToString("HH:mm:ss");

また

string sqlFormattedDate = myDateTime.Date.ToString("yyyy-MM-dd") + " " + 
myDateTime.tryParse.TimeOfDay.ToString("HH:mm:ss");

しかし、それは特定のコンテキストでは有効ではないメソッドだと言っています。私は自分の問題の解決策を探してみましたが、2 時間も立ち往生しています。私はまだ C# に慣れていないので、助けてもらえますか?

4

15 に答える 15

257

以下でこれを試してください

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
于 2013-07-02T05:55:01.217 に答える
52

標準の日時形式「s」を使用すると、国際化の互換性も確保されます (MM/dd と dd/MM):

myDateTime.ToString("s");

=> 2013-12-31T00:00:00

完全なオプション: (コード: サンプル結果)

d: 6/15/2008 
D: Sunday, June 15, 2008 
f: Sunday, June 15, 2008 9:15 PM 
F: Sunday, June 15, 2008 9:15:07 PM 
g: 6/15/2008 9:15 PM 
G: 6/15/2008 9:15:07 PM 
m: June 15 
o: 2008-06-15T21:15:07.0000000 
R: Sun, 15 Jun 2008 21:15:07 GMT 
s: 2008-06-15T21:15:07 
t: 9:15 PM 
T: 9:15:07 PM 
u: 2008-06-15 21:15:07Z 
U: Monday, June 16, 2008 4:15:07 AM 
y: June, 2008 

'h:mm:ss.ff t': 9:15:07.00 P 
'd MMM yyyy': 15 Jun 2008 
'HH:mm:ss.f': 21:15:07.0 
'dd MMM HH:mm:ss': 15 Jun 21:15:07 
'\Mon\t\h\: M': Month: 6 
'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00

.NET Framework でサポート: 4.6、4.5、4、3.5、3.0、2.0、1.1、1.0
参照:DateTime.ToStringメソッド

于 2014-01-02T04:25:47.960 に答える
5

DateTimeあなたの問題は、日付のみに切り捨てられる「日付」プロパティにあります。次のように変換できます。

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); // <- No Date.ToString()!
于 2013-07-02T05:58:55.423 に答える
4

最初のコードはこれを行うことで機能します

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss"); //Remove myDateTime.Date part 
于 2013-07-02T05:56:12.393 に答える
1

あなたの問題は、日付のみDateに切り捨てられるプロパティにあります。DateTime次のように変換できます。

DateTime myDateTime = DateTime.Now;

string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");
于 2015-08-04T05:38:47.727 に答える
1

私が探していた答えは:

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss");

また、次の方法で実行できることも学びました。

DateTime myDateTime = DateTime.Now;
string sqlFormattedDate = myDateTime.ToString(myCountryDateFormat);

myCountryDateFormat は、要件に応じて変更に合わせて変更できます。

タグ付けされた「この質問は既にここに回答がある可能性があります:」は、実際には質問に回答していないことに注意してください。.NET の新しいプログラマーにとってはかなり混乱します。

于 2013-07-02T22:47:28.640 に答える
-1

あなただけ入れて "T"+DateTime.Now.ToLongTimeString()+ '2015-02-23'

于 2015-06-29T01:38:30.843 に答える
-1

その DateTime でテーブルを更新する場合は、次の例のように SQL 文字列を使用できます。

int fieldId;
DateTime myDateTime = DateTime.Now
string sql = string.Format(@"UPDATE TableName SET DateFieldName='{0}' WHERE FieldID={1}", myDateTime.ToString("yyyy-MM-dd HH:mm:ss"), fieldId.ToString());
于 2015-07-03T16:48:25.763 に答える