0

我最近将我的字段的数据类型从 varchar 更改为 datetime,但在此之前,我先复制了它,因为内容将重置为这个值 000-00-00 00-00-00

现在,我正在尝试更新表的日期时间字段。

这就是我所做的

UPDATE table
INNER JOIN copyOfTable ON (table.logID = copyOfTable.logID)
SET table.date =  DATE(STR_TO_DATE(copyOfTable.date, '%m/%d/%Y'))

结果是这样的

YYYY-mm-dd 00-00-00
2013-08-02 00-00-00

我也试过

SET table.date =  DATE(STR_TO_DATE(copyOfTable.date, '%m/%d/%Y %h:%i:%s'))

结果保持不变。

我想要的也是复制时间(hh:ii:ss)

so that the total format of time is (YY-mm-dd hh-ii-ss)

表“copyOfTable”的时间格式为 (mm/dd/yy h:i:s A)

这家伙怎么办?

4

1 回答 1

2

恕我直言

  1. 如果您需要保留日期时间值的时间部分,请不要换STR_TO_DATE()DATE()
  2. 你的格式字符串应该是'%m/%d/%y %h:%i:%s %p'

照你说的

表“copyOfTable”的时间格式为 (mm/dd/yy h:i:s A)

所以如果我理解正确你的价值观copyOfTable看起来像08/01/13 04:08:12 AM

这是一个例子

SELECT STR_TO_DATE('08/01/13 04:08:12 AM', '%m/%d/%y %h:%i:%s %p') new_date

输出:

| 新日期 |
---------------------------------
| 2013 年 8 月 1 日 04:08:12+0000 |

这是SQLFiddle演示

于 2013-08-02T08:15:07.393 回答