无法识别的SQL日期时间值

时间:2014-11-04 00:14:06

标签: javascript c# sql datetime

我的Web应用程序中的一个函数调用自定义API(用C#编写),其中存储了许多内容,即当前日期和时间。到数据库和API的时间,只需使用DateTime.Now方法分配一个值。

以及上述日期&以下列方式检索时间值:

DateTime? dt = !string.IsNullOrEmpty((dr["RecordDate"]).ToString()) ? 
    Convert.ToDateTime(dr["RecordDate"].ToString()) : (DateTime?) null;

当我从上面的代码中将dt中的值分配给JavaScript变量时,我最终会得到一个值/Date(1415049596057)/。我见过日期&时间价值以不同的方式进行格式化,但我不认为我已经看到过这样的事情。我想我没有正确处理转换过程,但我对此感到很困惑。

更新

DateTime变量的值赋值完成如下:

using (var con = new SqlConnection(Service.GetSiteSetting(_httpContextAccessor.Current(), customdb))
{
    con.Open();
    var cm = new SqlCommand { CommandType = CommandType.StoredProcedure, CommandText = "SaveRecord", Connection = con };
    ...  // not showing other parameters
    cm.Parameter.Add(new SqlParameter("@RecordDate", SqlDbType.DateTime) { Value = DateTime.Now });
    ...
    cm.ExecuteNonQuery();
}

2 个答案:

答案 0 :(得分:0)

日期时间值的转换导致您的问题。查看comparing a SQL datetime to a JavaScript date上的相关帖子。

编辑:“1415049596057”的值不会转换为有效日期。 datejs.com上有一个快速检查功能,您可以使用。

验证字符串值

答案 1 :(得分:0)

所以,再过几个小时翻阅各种SO帖子,我终于找到了答案here。至于为什么我以特定格式获得DateTime,我仍然不确定100%。但是,我注意到有些人将这种奇怪的格式称为" JSON日期",所以也许它是什么,但掌握得更好的人可以确认。

无论如何,对于那些可能遇到同样问题的人,我所要做的只是在我的Javascript中添加一行代码,如下所示:

// 'dateVal' holds the datetime value I retrieved from the database. Also, since the value
// is in '/Date(1415049596057)/' format, I need to extract the numeric part of the value.
var date = new Date(parseInt(dateVal.substr(6)));

变量date中的值现在为Mon Nov 03 2014 16:19:56 GMT-0500 (Eastern Standard Time)。正如您所看到的,它相当冗长,但将该值格式化为您想要的任何格式都应该非常简单。