【发布时间】:2011-05-11 12:05:38
【问题描述】:
为简单起见,我在一个表中有两个字段:
- 日期 1(YYYY-MM-DD 格式)
- 天(一位或两位数的日期格式,1-31)
我希望能够使用 Day 中的值更新 Date 1,但我不想进行多次调用(首先是选择,获取结果,然后使用同一个表中的结果进行更新)。
最终,我的通话的“设计”(不起作用)将是:
更新表 SET 日期 1 = DATE(Y-(M+1)-(Day的值));
或在 php 中:
date("Y-m-d", mktime(0,0,0,date('m')+1, VALUE(Day), date('Y')));
这可能吗?
更新
==
虽然我已经能够使用下面的一些代码,但我不确定 MYSQL 是否足够“智能”来运行我所拥有的计算。我的新代码是:
更新表设置日期 1= CONCAT(YEAR(CURDATE()),'-',MONTH(ADDDATE(CURDATE(), 间隔 1 个月)),'-',Day1)
虽然这会返回正确的“新月份”和“新一天”,但当当前月份是 12 月时,年份将是错误的。
例如:如果当前日期是 2010-12-02。 Day 字段中的首选数据是 12。一旦我们的脚本处理完毕,Date 1 字段应该更新为 2011-01-12,但在上面的代码中它只会输出到 2010-01-12。
【问题讨论】:
-
我不明白你想要完成什么。 “Day”是否存储实际的日期天数或者您是否正在增加它?我认为摆脱您的 Day 字段并使用日期操作功能会使您更容易。使用两列存储可以从一列获得的相同数据会冒很大的风险。
-
@Cfreak - 它不是相同的数据。日期 1 字段可以随时更新,但当发生某些操作时,该字段的 DAY 部分会更新为存储在 Day 字段中的值。最后一点,有两个具有“相似”数据的字段,一个是 tinyint 几乎不是“大风险”