php - 使用来自另一个字段的单个 INT 更新 MySQL 日期字段?

标签 php mysql datetime

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

  • 日期 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/

相关文章:

javascript - Bootstrap Modal 无法刷新数据

php - 如何检查group_concat字段中的id?

php - 将许多 MySQL 查询与逻辑合并到数据文件中

java - 从 Java 日期中添加/减去 5 秒 - 显示已弃用的警告

mysql - 设置 DATE 或 DATETIME 默认值时 MySQL 出错

php - Facebook JS SDK 返回 XSS 错误和 "user_denied"响应,而不在 FB.Login 上显示身份验证弹出窗口

MySQL 服务代理

java - JPA/Hibernate native 查询未按要求工作

sql - 将 Oracle 日期算法转换为 PostgreSQL

php - 如何正确使用 jquery 的 getJSON?