【问题标题】:How to bulk move existing content of mysql date column to new one of different type?如何将mysql日期列的现有内容批量移动到不同类型的新内容?
【发布时间】:2017-09-07 00:07:39
【问题描述】:

我想传输我当前 MYSQL 表的日期字段格式 (YYMMDD) 的内容,例如20170411 到一个新的现有的 UNIX TIMESTAMPS (1491920214)。

这可以作为一个查询语句吗?它看起来如何?还是我必须先转换现有列的所有数据?

  • 表 = wp_postmeta
  • 旧日期字段 = old_meta_date
  • 新日期字段 = new_meta_date

提前感谢您的帮助。

【问题讨论】:

  • 原始列的数据类型是什么?你试过什么?显示无效的代码。
  • 还没有尝试过任何东西,因为我不知道从哪里开始。目前正在检查 phpMyAdmin 中的表格列。
  • old_meta_date 列是哪个数据类型???
  • 当前列是longtext类型。我尝试通过选择新类型的 unix 时间戳来更新其中一个,并将输出与unixtimestamp.com 进行比较。结果不同的地方。从网站上看,它说 20170323 = 1490227200,MySQL = 1490223600。
  • 抱歉当前是 varchar(255)

标签: mysql database wordpress date sql-update


【解决方案1】:

在您看来,您的原始列可能是 varchar

如果是这样,你可以使用

SELECT UNIX_TIMESTAMP(concat(substr(old_meta_date,1,2),'-', 
            substr(old_meta_date,3,2) , '-',
            substr(old_meta_date,5,2) ))
from wp_postmeta;

所以你可以更新

update wp_postmeta
set new_meta_date =  UNIX_TIMESTAMP(concat(substr(old_meta_date,1,2),'-', 
                    substr(old_meta_date,3,2) , '-',
                    substr(old_meta_date,5,2) ));

或使用强制转换日期

SELECT UNIX_TIMESTAMP(CAST(old_meta_date AS DATE))
from wp_postmeta;

update wp_postmeta
set new_meta_date =  UNIX_TIMESTAMP(CAST(old_meta_date AS DATE));

【讨论】:

  • 将备份当前表并尝试一下,谢谢。会让你知道的。
猜你喜欢
  • 2021-03-01
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2013-07-04
  • 2013-03-19
  • 1970-01-01
相关资源
最近更新 更多