MySQL更新自mm / dd / YY h:i:s A到YY-mm-dd H-i-s

时间:2013-08-02 08:02:32

标签: mysql datetime

我最近将我的字段的数据类型从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)

怎么做这个家伙?

1 个答案:

答案 0 :(得分:2)

IMHO

  1. 如果您需要保留日期时间值的时间部分,请不要将STR_TO_DATE()包裹到DATE()
  2. 您的格式字符串应为'%m/%d/%y %h:%i:%s %p'
  3. 据你所知

      

    表'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
    

    输出:

    |                      NEW_DATE |
    ---------------------------------
    | August, 01 2013 04:08:12+0000 |
    

    这是 SQLFiddle 演示