gpt4 book ai didi

mysql - 选择假设 mysql 中 future 日期的记录

转载 作者:行者123 更新时间:2023-11-29 09:23:43 25 4
gpt4 key购买 nike

我使用以下选择语句来选择金额总和(假设没有 future 日期)。如何更改此声明以包含 future 日期?

SELECT SUM(amount) as allPreviousAmount 
FROM `fn_table`
WHERE MONTH(transdate) < ? OR YEAR(transdate) < 2019 )

? 代表月份数字。我有2018年、2019年、2020年的数据,现在我想选择2019年2月之前的所有数据,如何选择?问题是这也选择了2020年的数据。

最佳答案

关于您现有的查询,您肯定需要 AND(而不是 OR)来确保没有 future 的日期?假设现在是 2020 年 7 月,而您的日期是 2021 年 1 月,这是 future 的日期。如果你说MONTH('jan-2021') < MONTH('jul-2020') OR YEAR('jan-2021') < YEAR('jul-2020')那么这将是正确的,因为 jan 早于 jul,因此将返回 future 日期 2021 年 1 月

不太清楚为什么你不只是 WHERE transdate < CURRENT_DATE()除非本月的任何一天也被归类为 future 日期...(通过要求月份和年份必须小于当前日期,如果是 2020 年 7 月 13 日,您将只能获得截至 6 月底的记录2020 年(如果仅考虑月份和年份)

但要包含过去和 future 的所有日期,只需完全删除 WHERE 子句

<小时/>

编辑回复评论:

如果您想要一个提供“截至 2005 年 7 月 1 日但不包括 2005 年 7 月 1 日的所有数据”的查询,请执行以下操作:

WHERE transdate < ?

并在前端提供日期类型参数 01-jul-2005。可以提供任何日期,但要在特定月末截止,请提供某个月的第一天的日期

您也可以通过提供高于表中任何可能日期的日期(例如 01-jan-3000)来对 future 日期重复使用相同的查询

关于mysql - 选择假设 mysql 中 future 日期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978863/

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