Mysql 如何从表中选择日期范围内的值的集合
让我举一个简单的例子来说明我的意思 假设我们有一个名为accounts的表,其中包含存款、每月和代尔列。 选择总和(存款)将获得存款列下所有值的总和。Mysql 如何从表中选择日期范围内的值的集合,mysql,sql,Mysql,Sql,让我举一个简单的例子来说明我的意思 假设我们有一个名为accounts的表,其中包含存款、每月和代尔列。 选择总和(存款)将获得存款列下所有值的总和。 假设dmonth包含日期时间,例如,您可以使用where clase来执行此操作,那么获取2016年7月之前的存款总额的SQL查询是什么 Select sum(deposits) as Sum from accounts where dmonth < 07-01-16 00:00:000.000 选择金额(存款)作为存款月份
假设dmonth包含日期时间,例如,您可以使用where clase来执行此操作,那么获取2016年7月之前的存款总额的SQL查询是什么
Select sum(deposits) as Sum from accounts where dmonth < 07-01-16 00:00:000.000
选择金额(存款)作为存款月份<07-01-16 00:00:000.000的账户的金额
另见:
根据您的
dyear
和dmonth
的存储方式,您可能需要执行以下操作:
选择SUM(存款)作为存款\u SUM,其中CONVERT(int,dyear+dmonth)<201607
我在这里所做的是将您的dyear
和dmonth
组合起来,创建一个按时间顺序排序的值。然后我将其转换为整数以进行比较
使用此逻辑,我们可以通过在where
子句中执行<201607
找到该值小于2016年7月的所有记录。如果您的年份未存储为yyyy
和/或您的月份未存储为MM
,则此最后一部分可能需要进行一些修改。以下是另一种方法:
SELECT SUM(Deposits)
FROM Accounts
WHERE (dYear = 2016 AND dMonth < 7)
OR dYear < 2016
选择金额(存款)
来自帐户
式中(dYear=2016,且每月数<7)
或dYear<2016年
选择SUM(存款)作为存款\u SUM(int,dyear+d月)<201607
-根据年和月的存储方式,您必须更改201607
部分。我的示例假设年份存储为4位数字,月份存储为2位数字。少于10月份的月份存储为单个数字,例如7而不是07,那么20167是否正确?是的,应该可以!对比2015年12月和2016年9月,201512是否小于20169?这个有点棘手。如果你提供一些样本数据,我们可以肯定地告诉你。下面有很多猜测,我假设dmonth
不包含完整日期,只是因为他有一个单独的dyear
列。再说一次,这只是一个假设。泰勒说得好,我们肯定需要知道第六个月的价值,并且更清楚地知道他们要走多远,就今年,永远,等等,而不仅仅是今年。句号是任意的。谢谢。很好,但它不会捕捉到比2016年早的年份抱歉。或者dYear<2016应该注意这点。@bodesam是的,没错。