我试图插入'DateTime.Now'到SQL日期时间列类型,但插入完成时sql
表日期是OK! (exp:2015-02-11)但时间存储为00:00:00 !!!我尝试了许多替代品。 这是我的代码:从asp.net插入Datetime.now到sql服务器
sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s");
我失踪了什么?
我试图插入'DateTime.Now'到SQL日期时间列类型,但插入完成时sql
表日期是OK! (exp:2015-02-11)但时间存储为00:00:00 !!!我尝试了许多替代品。 这是我的代码:从asp.net插入Datetime.now到sql服务器
sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s");
我失踪了什么?
您在指定SqlDbType
的Date
- 这没有时间。因此,当驱动程序将参数值转换为所需类型时,它将删除时间部分。
你也转换DateTime.Now
成一个字符串没有明显的理由...并在使用奇数和有损时间格式的方式这样做(h:m:s
,没有AM/PM指示)。如果你确实确实想要转换为字符串,那么最好使用HH:mm:ss
作为时间说明符。
这条线:
sqlComm.Parameters.Add("@join_date", SqlDbType.Date).Value = DateTime.Now.ToString("yyyy-MM-dd h:m:s");
应该是:
sqlComm.Parameters.Add("@join_date", SqlDbType.DateTime).Value = DateTime.Now;
是的 - 谢谢!亲爱的Jon Skeet时间部分是在稍后的修改中添加的,所以我忘记更改DBType,字符串转换是我的一个变化。任何方式非常感谢你。 – 2015-02-11 18:31:27
乔恩的答案是好的,但也可以让事情变得更容易这样的:
sqlComm.Parameters.AddWithValue("@join_date", DateTime.Now);
它会自动根据值的类型使用正确的数据类型。
此外 - 你说你是从ASP.Net调用这个。在网络应用程序中,DateTime.Now
通常不合适 - 因为它使用服务器的时区,并且它不保留任何偏移量信息,因此在daylight saving time回退转换期间可能不明确。我建议在数据库中存储基于UTC的值(DateTime.UtcNow
)。
如果您觉得服务器的本地时区与您的用例相关,那么请考虑将数据库列切换为datetimeoffset
类型并使用DateTimeOffset.Now
。这将避免DST转换的问题。
哇!谢谢这帮了很多! – 2015-02-11 19:16:58
Try..date time.now.to字符串( “YYYY-MM-DD HH:MM:SS”) – Chris 2015-02-11 18:11:17
https://msdn.microsoft.com/en-us/ library/8kb3ddd4%28v = vs.110%29.aspx – Chris 2015-02-11 18:11:43
感谢@Chris它的完成。看到接受的答案 – 2015-02-11 18:54:40