更改longtext格式SQL

时间:2016-11-16 17:04:10

标签: mysql wordpress

我需要一些帮助,我有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知识在一瞬间消失了......任何方向?有帮助吗?也许我需要另外喝咖啡?也许我正在寻找一些甚至无法实现的东西......

1 个答案:

答案 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();`