使用来自其他字段的单个INT更新MySQL Date字段?

时间:2010-11-17 15:40:56

标签: php mysql datetime

为简单起见,我在表格中有两个字段:

  • 日期1(YYYY-MM-DD格式)
  • 日(单日或双位数字格式,1-31)

我希望能够使用Day中的值更新日期1但我不想进行多次调用(首先是选择,获取结果,然后使用同一个表中的结果进行更新)。

最终,我的电话“设计”(不起作用)将是:

  

UPDATE表SET日期1 =   日期(Y-(M + 1) - (日期值));

或在php中:

date("Y-m-d", mktime(0,0,0,date('m')+1, VALUE(Day), date('Y')));

这可能吗?

更新

==

虽然我已经能够利用下面的一些代码,但我不确定MYSQL是否“足够聪明”来运行我的计算。我的新代码是:

  

UPDATE表SET日期1 =   CONCAT(YEAR(CURDATE()), ' - ',MONTH(ADDDATE(CURDATE()   间隔1个月)),' - ',第1天)

虽然这会返回正确的“新月”和“新的一天”,但当月是12月时,这一年将是错误的。

例如:如果当前日期是2010-12-02。日期字段中的首选数据为12.处理完脚本后,日期1字段应更新为2011-01-12,但在上面的代码中,它只会输出到2010-01-12。

1 个答案:

答案 0 :(得分:1)

未经测试,但我认为您遗失的是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);