我需要在我的页面上显示最近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")
以获取要与之比较的正确数据?
答案 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
}