8

ストア プロシージャを使用してデータベースに保存しています。この形式でデータベースに保存される関数とsysdatetime()、そのタイプを使用してタイム スタンプを保存します。新しい投稿を作成しているときは問題ありませんが、レコードを更新しようとしているときは、現在のストア プロシージャにパラメーターを送信する必要があります。私はこれを試しましたvarchar(max)yyyy-mm-dd hh:mm:ss.sssssssdatetime

DateTime.Now.ToString(yyyy-mm-dd hh:mm:ss.sssssss)

しかし、私はエラーが発生しています。私がしなければならないこと?

追伸: 以下の画像とエラー メッセージを参照してください。

ここに画像の説明を入力

4

3 に答える 3

23

文字列表現が本当に必要な場合は、実際必要だと思います:

string text = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fffffff", 
                                       CultureInfo.InvariantCulture)

ご了承ください:

  • 本当に現地時間が必要でない限り、UtcNow代わりに を使用してNowください。タイムスタンプについては、ほとんどの場合 UTC が必要です。
  • 現在の文化の時間区切り記号を使用したいとは思わないため、次の仕様CultureInfo.InvariantCulture
  • 「MM」は月、「mm」は分を意味します。
  • 「HH」は 24 時間制を意味し、「hh」は 12 時間制を意味します。
  • 「ff...」は小数秒に使用されます

カスタムの日付と時刻の書式設定の詳細については、MSDNを参照してください。

ただし、可能な限り文字列変換を避けることを強くお勧めします。ストアド プロシージャDateTimeが、文字列表現の代わりに関連する型を使用できないのはなぜですか? 次に、ストアド プロシージャに値を (コマンド パラメーターを介して) 渡すことができ、エラーが発生しやすい文字列変換の煩雑DateTimeを取り除くことができます。

于 2012-04-27T10:31:53.590 に答える
6

次のコードを使用します。

DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffffff")

この参照を参照してください: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2012-04-27T10:28:30.480 に答える
0

ここに小さなサンプルがあります:

DateTime date3 = new DateTime(2008, 1, 1, 0, 30, 45, 125);
Console.WriteLine("Date with milliseconds: {0:MM/dd/yyy hh:mm:ss.fff}", 
                  date3);
// Displays the following output to the console:
//       Date with milliseconds: 01/01/2008 12:30:45.125 

適切な数の「f」をコマンドに入れるだけで完了です

于 2012-04-27T10:35:22.747 に答える