我在这里使用golang保存日期范围。假设我们必须将所有星期一保存在1-may-2018
到14-july-2018
的范围之间。
我们如何使用 golang 查找这些范围之间的所有星期一,另一方面我们设置了start_time
(8:00 A.M.
)和end_time
(6:00 P.M.
)数据库中的前两个星期一(start_time
),但是在第三个星期一,我们对时间表进行了更改,即9:00 A.M.
(end_time
)和{{ 1}}(5:00 P.M.
)。那么我将如何使我的数据库实际上使用golang来实现这种情况。
任何人都可以帮我解决这个问题。我为它做了一个数据库,我做了ppr工作,并在下面显示了一些字段: -
Fields for Schedule //Schedule is a collection name
Id (int)
Day (string)
Start_hours (int)
Start_minutes (int)
End_hours (int)
End_minutes (int)
Start_date (timestamp)
End_date (timestamp)
我将如何选择所选范围之间的星期一以及我将如何处理上面解释的情况,任何人都可以指导我使这种情况更容易。谢谢,如果这是一个基本问题,那么我真的很抱歉。
答案 0 :(得分:0)
我做这样的事情。
我不会花费数小时和数分钟,因为您可以轻松地从Go的时间戳中获取它们。这是我要制作的简化数据库结构
Fields for Schedule //Schedule is a collection name
Id (int)
Day (string)
Date (timestamp) // the actual date
Start (timestamp)
End (timestamp)
您不再需要任何字段。您也可以从日期字段中获取星期几(结构中的日期(字符串),例如星期一),但我相信如果您想在不同的日期查询集合,这可能会加快速度,但要小心,你需要调整时区。如果您使用多个,则将所有内容存储在UTC中,并且您可能有一个额外的提交时区,因为一个区域的日期可以是星期一,而另一个区域可以是星期日。
因此,附表将保留工作日以及每个人的开始和结束时间。我不确定您是否需要存储初始日期范围,Schedule集合也将保留该范围,将第一条记录形成为最后一条记录。在我看来,我最初使用给定的日期范围填充集合,然后我可以通过添加新日期或删除它们来修改它。 当您使用“日期”字段的某个开始日期和结束日期范围查询此集合时,如果您的第一个结果是从开始的7天开始,则表示您从一开始就错过了1个或更多条目。如果最后一个结果超出了范围结束的7天,则表示您在范围结束之前错过了一些条目。
Go没有什么特别的,在我看来,Go适用于日期,你不需要在你的数据库中有任何特殊的日期结构。