数据表显示Date列的不同数据,然后数据库查询

时间:2017-01-30 23:03:26

标签: jquery datatable

我需要在我的页面上显示最近40天的数据。 使用以下语句运行查询时: ... and CreateDate > getdate() - 40 ... 我得到了CreateDate的正确数据:2017-01-11 14:51:43.150

当尝试使用javascript获取相同的数据时,我获取的数据的日期为12/21/2016 13:42:56:

for (var i = 0; i < MyObject.length; i++) {
     if (MyObject[i][0].toString("MM/dd/yyyy HH:mm:ss") > Date.today().add(-40).days().toString("MM/dd/yyyy HH:mm:ss")) {
          aData[aData.length] = MyObject[i];
     }
}

我注意到,当我在SQL中运行select getdate() - 40时,我得到2016-12-21 18:27:25.877,这比我的CreateDate少。这就是我在SQL中获得2017-01-11 14:51:43.150的原因。

然而,当尝试使用javascript获取相同的记录时:

Date.today().add(-40).days().toString("MM/dd/yyyy HH:mm:ss"),此声明产生:&#34; 12/21/2016 00:00:00&#34;日期。

这就是我的if逻辑不能比较正确数据的原因。 而不是将2016-12-21 13:42:56.123与2016-12-21 18:27:25.877进行比较, 它比较2016-12-21 13:42:56.123和12/21/2016 00:00:00。

这使得左侧值大于正确值,因此它显示相应的对象。

我需要格式化右手值,所以日期是2016-12-21 18:27:25.877

如何格式化Date.today().add(-40).days().toString("MM/dd/yyyy HH:mm:ss")以获取要与之比较的正确数据?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 我认为问题在于比较字符串值而不是实际日期。

以下是解决方案:

var createDate = new Date(MerchantNotes[i][0]);
var forty = new Date();
forty.setDate(forty.getDate() - 40);

if (createDate > forty)
{
   //the logic goes here
}