【问题标题】:How to get records greater than selected year and month when the year is greater and month is less than specified one in Yii2Yii2中年份大于月份小于指定年份时如何获取大于选定年份和月份的记录
【发布时间】:2020-03-25 00:09:51
【问题描述】:

我使用的是 Yii2 基础版。我有一个名为 groupsavingdetails 的表。在该表中,我有 ID 为 29 的特定组的记录,从 2017 年开始,以及 8 月、9 月、10 月、11 月和 12 月。 2018 年 1 月和 3 月也有同一组的记录。

情况是我想更新年份为 2017 年且月份为 9 月的记录。现在我想获取所有大于 2017 年 9 月记录的记录。我应该得到总共 5 条记录,但以下查询只获取了 3 条记录。

SELECT * FROM groupsavingdetails WHERE groupsavingdetails.GroupId=29 and Year>=2017 and Month>9

下面是包含记录的表的图像。所以我应该从 ID 47、48、49、51、52 ​​中获取记录。我应该如何获得它。

【问题讨论】:

  • 试试WHERE CONCAT(month,"-",year) >= "09 - 2017" AND GroupId = 29
  • 仍然没有显示所有记录
  • 删除空间WHERE CONCAT(Month,"-",Year) >= "9-2017" AND GroupId = 29
  • 不,现在显示的是九月份的记录
  • 您的 month 列在 DB 结构中是 INTyearYEAR

标签: php mysql yii2 yii2-basic-app


【解决方案1】:
SELECT * FROM groupsavingdetails WHERE 
groupsavingdetails.GroupId=29 
and ( Year > 2017 or (Year>=2017 and Month > 9) )

在这个查询中

如果年份大于 2017,它将显示

年份为 2017 且月份大于 9 也会显示

【讨论】:

  • 谢谢。这也适用于我。这是正确的吗。 SELECT * FROM groupsavingdetails WHERE ((groupsavingdetails.GroupId=29 and Year>=2017 and Month>9) OR (GroupId=29 and Year>2017AND Month>0))
  • 两者相同,但你使用了两次 ---> 'groupsavingdetails.GroupId=29'
  • 那我可以用你推荐的那个还是第二个。哪个有效?
  • 我认为查询中的条件较少比其他条件更快
  • 嗨,现在的情况是当我想更改 9 月份的记录时,它的期末余额将被更改,因此这个新的期末余额将设置为 10 月份的期初余额等等。我该怎么做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多