字段是meta_value
,当前值就像01/01/2006
我想把它改成一个字符串,20060101
所以我想我可以得到这个值并按正确的顺序用字符更新它。
IE
UPDATE wp_postmeta SET meta_value = meta_value[9]meta_value[8]meta_value[7]meta_value[6]
Run Code Online (Sandbox Code Playgroud)
假设 meta_value始终为dd/mm/yyyy 并且您正在寻找 yyyymmdd (不清楚),请尝试以下操作:
UPDATE wp_postmeta
SET meta_value = CONCAT(SUBSTRING(meta_value FROM 7),
SUBSTRING(meta_value, 4, 2),
SUBSTRING(meta_value, 1, 2));
Run Code Online (Sandbox Code Playgroud)
首先将其作为 SELECT 运行以在更新之前验证输出,并确保它是您真正需要的。
由于该字段存储varchar(255)
在该表中(即,它存储为字符串,而不是特殊的日期格式),因此您需要对其进行切片,然后将这些块连接在一起。
假设原始日期是 dd/mm/YYYY 并且所需的格式是 YYYYmmdd 那么你可以做这样的事情:
UPDATE wp_postmeta SET meta_value = concat(substring(meta_value,7,4),substring(meta_value,4,2),substring(meta_value,1,2))
Run Code Online (Sandbox Code Playgroud)
这是使用该substring
函数对原始字符串进行拆分,该命令的格式为:
substring(string to split,starting position in string, length of required substring)
Run Code Online (Sandbox Code Playgroud)
这不是唯一的格式,这里有更多示例 - http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr
然后我们使用该concat
函数将 3 个新字符串连接为一个(有关该字符串的详细信息 - http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat)
但是您需要非常小心地运行该更新。目前它将为表中的每一行执行此操作。因此,如果您有一行 post_meta='Stuart Moore',它将被更新为 'MooarSt',这可能不是您想要的。因此,请确保使用 where 子句来限制要修改的行。