Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从表中选择日期范围内的值的集合_Mysql_Sql - Fatal编程技术网

Mysql 如何从表中选择日期范围内的值的集合

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 选择金额(存款)作为存款月份

让我举一个简单的例子来说明我的意思

假设我们有一个名为accounts的表,其中包含存款每月代尔列。 选择总和(存款)将获得存款列下所有值的总和。
假设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是的,没错。