如何保存和搜索准确的日期?
How to save and search for EXACT date?
设置
我正在创建一个 React 应用程序以从 MongoDb Atlas 数据库保存和检索每日报告。每个用户每天只能有一份报告。每日报告的搜索条件当然是日期。
逻辑与代码
该应用有一个来自 material-ui 日期选择器的日历小部件。它 returns 使用当前 UTC 时间的选定日期。但是如果我直接使用它搜索数据库,那么显然我不会找到任何东西,因为 hours:minutes:seconds:milliseconds 的差异。您正在搜索的 Date() 不可能与报告的创建时间精确匹配。所以我的想法是存储每份报告的日期,时间恰好是凌晨 12 点,即 00:00:00:000Z,并在数据库中搜索时间为凌晨 12 点的日期。
selectedDate.setUTCHours(0,0,0,0); //sets the time to 12am
selectedDate.toISOString();
问题
对于这种情况,这是正确的方法吗?我这样做会不会遇到问题?如果日期是搜索条件并且必须完全匹配,应该如何存储日期?它还必须为世界各地的任何用户提供服务,以保存和检索他们的报告。
谢谢,
苏拉吉
您可以根据需要存储日期,只需在您的数据库查询中使用条件
SELECT * FROM reports WHERE date BETWEEN '2020-05-01 00:00:00' AND '2020-05-01 23:59:59'
设置
我正在创建一个 React 应用程序以从 MongoDb Atlas 数据库保存和检索每日报告。每个用户每天只能有一份报告。每日报告的搜索条件当然是日期。
逻辑与代码
该应用有一个来自 material-ui 日期选择器的日历小部件。它 returns 使用当前 UTC 时间的选定日期。但是如果我直接使用它搜索数据库,那么显然我不会找到任何东西,因为 hours:minutes:seconds:milliseconds 的差异。您正在搜索的 Date() 不可能与报告的创建时间精确匹配。所以我的想法是存储每份报告的日期,时间恰好是凌晨 12 点,即 00:00:00:000Z,并在数据库中搜索时间为凌晨 12 点的日期。
selectedDate.setUTCHours(0,0,0,0); //sets the time to 12am
selectedDate.toISOString();
问题
对于这种情况,这是正确的方法吗?我这样做会不会遇到问题?如果日期是搜索条件并且必须完全匹配,应该如何存储日期?它还必须为世界各地的任何用户提供服务,以保存和检索他们的报告。
谢谢, 苏拉吉
您可以根据需要存储日期,只需在您的数据库查询中使用条件
SELECT * FROM reports WHERE date BETWEEN '2020-05-01 00:00:00' AND '2020-05-01 23:59:59'