我需要一些帮助,我有Wordpress表“wp_postmeta”,其中包含4列“meta_id”,“post_id”,“meta_key”和“meta_value”。
“meta_key” - > VARCHAR
“meta_value” - > LONGTEXT
事情是:我有一些内容
meta_key = "limit_date"
返回日期格式为dd / mm / yyyy的行,我想用yyyy / mm / dd转换这些数据
SELECT *
FROM wp_postmeta
WHERE meta_key="limit_date"
返回我需要更改的所有行,并且我已尝试使用CONVERT函数进行一些查询,实际上我接近得到“psycho”并且我的低sql知识在一瞬间消失了......任何方向?有帮助吗?也许我需要另外喝咖啡?也许我正在寻找一些甚至无法实现的东西......
答案 0 :(得分:0)
我无法找到一个只有SQL的解决方案,所以我使用php,获取所有结果,然后我以正确的方式形成结果,然后更新表,我确定有一些更快的方法,但这个对我有用
$link =new mysqli("localhost","user","passw","ddbb");
if($link->connect_error){
die("Not connected");
}
$sql = "SELECT *
FROM wp_postmeta
WHERE meta_key='fecha_inicio'";
$result = $link->query($sql);
$update;
$aux=0;
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$update[$aux][0]=$row['meta_id'];
$update[$aux][1]=$row['post_id'];
$update[$aux][2]=$row['meta_key'];
$update[$aux][3]=$row['meta_value'];
$aux++;
}
}else{
echo "0 rows";
}
print_r($update);
$aux=0;
foreach($update as $row){
$aux2=$row[3];
$aux3="";
if(strlen($aux2)>0){
$aux3 = substr($aux2,-4);
$aux3 .= "/";
$aux3 .= substr($aux2,-7,2);
$aux3 .= "/";
$aux3 .= substr($aux2,-10,2);
}
$update[$aux][3]=$aux3;
$aux++;
}
foreach($update as $row){
$sql = "UPDATE wp_postmeta SET meta_value='".$row[3]."' WHERE meta_id=".$row[0].";";
echo "<h1>".$sql."</h1></br></br></br>";
if ($link->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $link->error;
}
}
$link->close();`