我使用存储过程使用名为sysdatetime()
的函数和varchar(max)
类型的函数使用存储过程存储在我的数据库中,该函数以此格式yyyy-mm-dd hh:mm:ss.sssssss
存储在数据库中。当我正在创建一个新帖子时它很好,但是当我尝试更新记录时,我必须使用当前datetime
向存储过程发送一个参数。我试过这个
DateTime.Now.ToString(yyyy-mm-dd hh:mm:ss.sssssss)
但是我收到了一个错误。我该怎么做?
P.s:请参阅下图,并显示错误消息
答案 0 :(得分:22)
我怀疑你是否真的需要字符串表示,实际上想要:
string text = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fffffff",
CultureInfo.InvariantCulture)
请注意:
UtcNow
代替Now
。对于时间戳,您几乎总是想要UTC。CultureInfo.InvariantCulture
有关自定义日期和时间格式的详细信息,请参阅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”放入您的命令即可完成