![](/img/trans.png)
[英]Comparing SQL Server DATETIME with DateTime.NOW in C# / ASP.NET
[英]Insert Datetime.now from asp.net into sql server
我正在尝试将'DateTime.Now'插入日期时间的sql列类型中,但是在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");
我想念什么???
您正在指定Date
的SqlDbType
没有时间。 因此,当驱动程序将参数值转换为所需的类型时,它将删除时间部分。
您还没有明显的原因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)的回答很好,但是您也可以像下面这样使事情变得简单:
sqlComm.Parameters.AddWithValue("@join_date", DateTime.Now);
它将根据值的类型自动使用正确的数据类型。
另外-您说您是从ASP.Net调用此功能的。 在Web应用程序中, DateTime.Now
通常是不合适的-因为它使用服务器的时区,并且它不保留任何偏移量信息,因此在夏令时回退过渡期间可能不明确。 我建议将基于UTC的值存储在数据库中( DateTime.UtcNow
)。
如果您认为服务器的本地时区与您的用例相关,请考虑将数据库列切换为datetimeoffset
类型并使用DateTimeOffset.Now
。 这样可以避免DST过渡的问题。
另请参阅: 针对DateTime.Now的案例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.