8

我正在使用存储过程将日期时间戳存储在我的数据库中,该日期时间戳使用一个调用的函数sysdatetime()以及一种varchar(max)以这种格式存储在数据库中的类型yyyy-mm-dd hh:mm:ss.sssssss。当我创建一个新帖子时它很好,但是当我尝试更新记录时,我必须使用当前的datetime. 我试过这个

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

但我遇到了一个错误。我必须做什么?

Ps:请看下图及错误信息

在此处输入图像描述

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类型而不是字符串表示?然后,您可以将值作为a 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 回答