2016-11-16 46 views
0

我需要一些幫助,我有Wordpress表「wp_postmeta」,它包含4列「meta_id」,「post_id」,「meta_key」和「meta_value」。更改長文本格式SQL

「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功能的一些疑問,其實I'm接近得到「心理」和我的小SQL知識被瞬間dissapearing ...任何方向?任何幫助?也許我需要再喝一杯咖啡?也許我正在尋找一些甚至不可能的東西...

+0

你嘗試過或使用的MySQL DATE_FORMAT()函數? –

+0

@HassanALi是啊我試過了,但不用擔心我已經做到了,通過使用PHP並獲取所有行,格式化後面的文本並更新這些行 – ivannaxara

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