gpt4 book ai didi

sql - 日期范围 : inclusive vs strict boundaries

转载 作者:行者123 更新时间:2023-12-05 00:06:03 25 4
gpt4 key购买 nike

当允许用户选择日期范围时,让我们说:

Show me entries from [August 1] to [September 1]



作为用户,我通常希望这包括 9 月 1 日的结果。特别是当您考虑到我为两端选择相同日期时,我的意思显然是“从一天开始到一天结束”:

Show me entries from [September 1] to [September 1]



作为程序员,我认为日期边界是“零时”,即“一天的开始”;从逻辑上讲,9 月 1 日的条目实际上是在“2010-09-01 00:00:00”之后(因此超出范围)。

例如,在 SQL 中,以下条件将排除所有内容:
SELECT * FROM entries
WHERE created_at >= DATE('2010-09-01') AND created_at <= DATE('2010-09-01')

显然,需要根据用户对 SQL 的输入进行调整,以将结束日期提前 24 小时。

但是,这仅适用于时间戳或日期时间列。如果该列是日期,则直接比较有效,不应添加此调整。

在像 Rails 这样的 MVC 框架中,在发送查询之前,您在哪里处理这种输入不匹配的逻辑?如果它在 Controller 中,似乎太依赖于了解模型的内部字段(日期与日期时间),如果它在模型中,“find_in_date_range”方法是否会被理解为包含,或者只是邀请日常错误?

最后,我对让用户界面表示包含范围的假设是否正确?情况总是如此,还是在某些情况下严格(排他)日期边界更合适?例如,在我的 rake 脚本中,我使用参数 END_DATE=2010-09-01捕捉到这个日期,这与 UI 不一致,但对我来说很有意义:你在哪里画这条线?

最佳答案

我的个人偏见:

根据您认为用户会喜欢它的方式对其进行编程,但始终在 GUI 中使用标签明确包含与排他的选择。而不是说

Between _____________ and ______________

我总是标记为
On or after _______________ but before _______________

或者
On or after ______________ through ______________

(如果您正在编写一些用户每天使用的软件,并且您可以仔细培训他们,那么他们无论如何都不会阅读 GUI 标签,所以不要打扰。)

关于sql - 日期范围 : inclusive vs strict boundaries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com