将asp.net中的Datetime.now插入sql server

时间:2015-02-11 18:06:52

标签: c# asp.net sql-server datetime

我正在尝试将'DateTime.Now'插入到sql列类型的datetime中,但是当在sql表中完成插入时,日期是可以的! (exp:2015-02-11)但时间存储为00:00:00 !!!我试过很多替补。 这是我的代码:

sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s");

我缺少什么?

2 个答案:

答案 0 :(得分:8)

您指定的SqlDbType Date - 没有时间。因此,当驱动程序将参数值转换为所需类型时,它会删除时间部分。

DateTime.Now转换为字符串,原因并非明显......并且使用奇怪且有损的时间格式({{1}没有AM / PM指示符)。如果您确实 希望转换为字符串,那么最好使用h:m:s作为时间说明符。

这一行:

HH:mm:ss

应该是:

sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s");

答案 1 :(得分:2)

Jon的答案很好,但是,你也可以这样做:

sqlComm.Parameters.AddWithValue("@join_date", DateTime.Now);

它将根据值的类型自动使用正确的数据类型。

另外 - 你说你是从ASP.Net那里打电话的。在Web应用程序中,DateTime.Now通常不合适 - 因为它使用服务器的时区,并且它不会保留任何偏移信息,因此在{{{{{{{{ 3}}后退过渡。我建议在数据库中存储基于UTC的值(DateTime.UtcNow)。

如果您认为服务器的本地时区与您的使用案例相关,请考虑将数据库列切换为datetimeoffset类型并使用DateTimeOffset.Now。这样可以避免DST过渡问题。

另请参阅:daylight saving time