为了简单起见,我在一个表中有两个字段:
- 日期 1(YYYY-MM-DD 格式)
- 日(一位或两位数日格式,1-31)
我希望能够使用 Day 内的值更新 Date 1,但我不想为此进行多次调用(首先选择、获取结果,然后使用同一个表中的结果进行更新)。
最终,我调用的“设计”(不起作用)将是:
UPDATE table SET Date 1 = DATE(Y-(M+1)-(value of Day));
或者在 php 中:
date("Y-m-d", mktime(0,0,0,date('m')+1, VALUE(Day), date('Y')));
这可能吗?
更新
==
虽然我已经能够利用下面的一些代码,但我不确定 MYSQL 是否足够“智能”以运行我所拥有的计算。我的新代码是:
UPDATE table SET Date 1= CONCAT(YEAR(CURDATE()),'-',MONTH(ADDDATE(CURDATE(), INTERVAL 1 MONTH)),'-',Day1)
虽然这会返回正确的“新月份”和“新日期”,但当当前月份是 12 月时,年份将是错误的。
例如:如果当前日期是 2010-12-02。 Day 字段中的首选数据是 12。一旦我们的脚本处理完毕,Date 1 字段应更新为 2011-01-12,但在上面的代码中它只会输出到 2010-01-12。
最佳答案
未经测试,但我认为您缺少的是 CONCAT :
UPDATE table SET datefield = CONCAT(YEAR(datefield),'-',MONTH(datefield),'-',dayfield);
重读你的问题后,听起来你想加上天数,就像这样(也没有测试 - 看看 DATE_ADD and INTERVAL ):
UPDATE table SET datefield = DAT_ADD(datefield, INTERVAL dayfield DAYS);
关于php - 使用来自另一个字段的单个 INT 更新 MySQL 日期字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206104/