如何将C#中的DateTime.now转换为yyyy-mm-dd hh:mm:ss.sssssss?

时间:2012-04-27 10:25:53

标签: c# datetime

我使用存储过程使用名为sysdatetime()的函数和varchar(max)类型的函数使用存储过程存储在我的数据库中,该函数以此格式yyyy-mm-dd hh:mm:ss.sssssss存储在数据库中。当我正在创建一个新帖子时它很好,但是当我尝试更新记录时,我必须使用当前datetime向存储过程发送一个参数。我试过这个

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

但是我收到了一个错误。我该怎么做?

P.s:请参阅下图,并显示错误消息

enter image description here

3 个答案:

答案 0 :(得分:22)

我怀疑你是否真的需要字符串表示,实际上想要:

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(通过命令参数)传递给存储过程,您可以摆脱容易出错的字符串转换混乱。

答案 1 :(得分:5)

使用此代码:

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

请参阅此ref:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

答案 2 :(得分: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”放入您的命令即可完成