我在执行以下查询时遇到问题
UPDATE tbluser_payment
SET payment_date = SUBSTRING(payment_date, 1, 2) + 1
WHERE
trans_updatetime IN (
SELECT
trans_updatetime
FROM
`tbluser_payment`
WHERE
DAY (
cast(trans_updatetime AS date)
) IN ('28', '29', '30', '31')
)
我搜索了很多问题,但没有得到与此查询相关的任何内容 他们正在将记录插入数据库。
如果where子句返回true,我想将payment_date
coloumn更新为1
通过这种方式可以实现吗?
任何帮助都会得到赞赏
谢谢!
答案 0 :(得分:3)
我认为这里不需要子查询。使用where子句中的条件。
UPDATE tbluser_payment
SET payment_date = SUBSTRING(payment_date, 1, 2) + 1
WHERE DAY(cast(trans_updatetime AS date)) IN ('28', '29', '30', '31')
修改:使用if
以mmyyyy格式设置payment_date列。
UPDATE tbluser_payment
SET payment_date = IF(length(SUBSTRING(payment_date, 1, 2) + 1) < 2,
'0' + SUBSTRING(payment_date, 1, 2) + 1,
SUBSTRING(payment_date, 1, 2) + 1
)
+ SUBSTRING(payment_date, 3)
WHERE DAY(cast(trans_updatetime AS date)) IN ('28', '29', '30', '31')
and SUBSTRING(payment_date, 1, 2) <> 12