【发布时间】:2018-09-06 16:00:22
【问题描述】:
我有一张桌子,可以在其中获取特定公司的优惠券。 我的优惠券表是这样的:
Company_Coupon
- 身份证
- 公司ID
- 月
- Total_Coupons
- 年份
我以数字 (1-12) 的格式保存我的月份。
当我更新发票的总优惠券时,我想更新上个月的优惠券。
我通过以下查询来做到这一点:
UPDATE Company_Coupon
SET Total_Coupons = @count
WHERE CompanyID = 1205
AND Month = MONTH(GETDATE())-1 AND Year = YEAR (GETDATE())
我的查询有效,但我注意到这在 2019 年 1 月将无效。
如何更新此查询以使其在 2019 年 1 月生效?
【问题讨论】:
-
存储单个
YearMonth列可能会更好,键入为date并具有强制它始终是该月的第一天的约束。这样您就可以使用简单的日期数学函数来计算它。例如。DATEADD(month,DATEDIFF(month,'20010201',GETDATE()),'20010101')总是给你上个月的第一天。 -
@Damien_The_Unbeliever 遗憾的是,目前这不是一个选项,因为我使用此表循环遍历行并使用不同的算法对其进行操作
标签: sql sql-server datetime