繁体   English   中英

从ASP.NET将Datetime.now插入SQL Server

[英]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");

我想念什么???

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

没有明显的原因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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM