datetime alan MySQL için tarih dizesi dönüştürmek

5 Cevap php

Böyle ''04 / 17/2009 gibi bir dize olarak biçimlendirilmiş tarihleri ​​ile kayıtların bir grup var

Ben mysql datetime alanına onları dönüştürmek istiyorum

Ben eski tarih değerini okumak ve her kayıtta yeni bir alana yeni biçimlendirilmiş değeri eklemek için bir foreach döngüsü kullanmayı planlıyor

bu dizeyi dönüştürmek için en iyi yolu ne olurdu ... Ben php otomatik olarak yapmak için bir yol var diye düşündüm?

teşekkürler

5 Cevap

İlk olarak, bir zaman damgası dize dönüştürmek:

$timestamp = strtotime($string);

Sonra yapmak

date("Y-m-d H:i:s", $timestamp);

Bu dizeleri db şu anda iseniz, mysql'in STR_TO_DATE() işlevini kullanarak php atlayabilirsiniz.

Ben dizeleri gibi bir biçim kullanmak varsayalım month/day/year burada month ve day zaman 2 basamak vardır ve year 4 hanedir.

UPDATE some_table
   SET new_column = STR_TO_DATE(old_column, '%m/%d/%Y')

Sen other format specifiers ile diğer tarih formatlarını destekler.

Böyle DateTime :: createFromFormat kullanın:

$date = DateTime::createFromFormat('m/d/Y H:i:s', $input_string.' 00:00:00');
$mysql_date_string = $date->format('Y-m-d H:i:s');

Strtotime () kullanmayı / eğer ABD tarih biçimini kullanarak zannederler, oysa sen değilsin bile, herhangi bir giriş formatına bu uyarlayabilirsiniz.

Eğer kesin yapmazsan 00:00:00 sn değil: o anki saat sürer: dk createFromFormat, eksik veri doldurmak için geçerli tarih kullanacağız yani, çünkü katma 00:00:00 değildir.

$time = strtotime($oldtime);

Sonra date() doğru biçimde koymak için kullanabilirsiniz.

Sanırım Bash bu yaptığını bahsediyoruz varsayıyorum?

Ben her alanı yıkmak ve onunla ne istersem yapabilirim böylece bir diziye tarih değerlerini yüklemek için sed kullanmak ister. Aşağıdaki örnek varsayar ve gg / aa / yyyy giriş biçimi ...

DATE=$2
DATE_ARRAY=(`echo $DATE | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)
LOAD_DATE=$YEAR$MONTH$DAY

you also may want to read up on the date command in linux. It can be very useful: http://unixhelp.ed.ac.uk/CGI/man-cgi?date

Yardımcı olur ... umarım :)

-Ryan