使用参数在SQL中插入datetime而不是毫秒

时间:2014-01-15 16:22:47

标签: c# sql vb.net sql-server-2005 datetime

我需要在没有毫秒的情况下在我的SQL Server数据库中插入.net DateTime。

dtNow = Date.Now
myCmd.Parameters.AddWithValue("MyDate", dtNow)

我想要数据库中的值,例如:2014-01-15 17:18:04.000
作为秒,更准确的价值。

但是当我像这样插入一个插入时,它会增加实际的毫秒数:

INSERT Table1 (MyDate, id, MyValue, DateModified) 
VALUES (@ADate, @ID, @Value, @MyDate)

如何以最简单的方式实现这一目标?

1 个答案:

答案 0 :(得分:2)

虽然你可以减去评论中建议的毫秒数,但这仍然会留下亚毫秒值。 可能不会导致问题,但驱动程序可能会将亚毫秒值舍入到整个毫秒。它更干净(IMO)以避免任何亚秒值,因此您插入的值与存储的值相同。我更喜欢使用:

var truncated = new DateTime(dtNow.Year, dtNow.Month, dtNow.Day,
                             dtNow.Hour, dtNow.Minute, dtNow.Second);
// Use truncated as the parameter in your command

这样它显然有年/月/日/小时/分/秒值。

如果您发现自己经常这样做,您可能需要编写一个扩展方法,以便您可以使用:

var truncated = dtNow.TruncateToSecond();