小编典典

使用参数在SQL中插入日期时间(不带毫秒)

sql

我需要在没有毫秒的情况下在我的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)

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


阅读 220

收藏
2021-04-14

共1个答案

小编典典

尽管您 可以 按照注释中的建议减去毫秒数,但仍将获得亚毫秒级的值。那 可能
不会引起问题,但是驱动程序可能会将亚毫秒值四舍五入到整毫秒。这是一种更干净的(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();
2021-04-14