updatedAt
テーブルUser
にDate
タイプの列があり、日付と時刻が格納されています。日時ではなく日付のみを使用してクエリを実行したい。私はsequelizeSequelize.Op.gt
とSequelize.Op.lt
演算子を使用Users
して、時間を追加することにより、時間に関係なくその正確な日付に更新され24 * 60 * 60 * 1000
ます。しかし、日付は1日増加していません。減算しようとすると、問題なく動作しています。getTime()メソッドを使用して初めて1日追加できました。
使用せずに減算すると機能するのに、加算すると機能しない理由getTime()
がわかりません。誰か説明してもらえますか?
TL; DR
これは機能します:
[Sequelize.Op.gt]: new Date(new Date(updatedAt) - 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-26
これは機能しません:
[Sequelize.Op.gt]: new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-27
そしてこれは機能します:
[Sequelize.Op.lt]: new Date(new Date(updatedAt).getTime() + 24 * 60 * 60 * 1000)
//updateAt: 2018-11-27
//output: 2018-11-28
ステップによって、あなたの第二ケースのステップを見てみましょう
。1. new Date(new Date(updatedAt) + 24 * 60 * 60 * 1000)
2. new Date(new Date(updatedAt) + 86400000)
3.new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)86400000')
入力から文字列の「86400000」部分は無視され、日付のパーサーを。
4.new Date('Tue Nov 27 2018 17:34:48 GMT+0800 (Some Region)')
これで入力は変更されません。Javascriptは、文字列の追加と数値の追加のどちらを行っているかを認識していません。これはあなたの紛らわしい点です。それ以外の場合、整数の加算および減算演算子は適切に実行されます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加