2011-07-16 14 views
0

よろしくお願いします。私の手にはちょっとした謎があります。私はすべての異なった、主にアメリカのフォーマットで日付の束を持っています。 DATEフィールドにmysqlデータベースに追加する必要があります。だから、私はブローコードを書いて、何らかの仕分けをしてハイフンに置き換え、日付関数と一緒にstrtotimeを使用して正しいフォーマットに変換しました。私は家では無料だと思ったが、そうはしなかった。さまざまな形式の日付をmysqlに変換してDATE形式でデータベースに保存しますPHP

$q = "SELECT date_rendered, date_requested, record_id FROM client_svc_history"; 
$r = mysql_query($q) or die(mysql_error()); 

while($row = mysql_fetch_assoc($r)) { 
    $record_id = $row['record_id']; 
    echo $record_id.": ".$row['date_rendered']." "; 
    $date_rendered = preg_replace('~[^0-9]~','-',$row['date_rendered']); 
    echo $date_rendered." "; 
    $date_rendered = date('Y-m-d',strtotime($date_rendered)); 
    echo $date_rendered."<br> "; 
    echo $record_id.": ".$row['date_requested']." "; 
    $date_requested = preg_replace('~[^0-9]~','-',$row['date_requested']); 
    echo $date_requested." "; 
    $date_requested = date('Y-m-d',strtotime($date_requested)); 
    echo $date_requested."<br>"; 
} 

データをエコーアウトして、データベースに書き戻す前に正しく動作していることを確認できました。

以下は、私が得た出力のサンプルです。レコード7には03-23-2006がかかってゼロ化されています。レコード8では、問題なく同じフォーマットを処理しました。レコード11,12 & 13で、strtotimeが処理できる2つのフォーマットをゼロにしました。私は迷っている。私はどんな助けにも感謝します。ありがとう。

1: 0000-00-00 0000-00-00 1969-12-31 
1: 2005-02-25 2005-02-25 2005-02-25 
2: 0000-00-00 0000-00-00 1969-12-31 
2: 0000-00-00 0000-00-00 1969-12-31 
3: 2005-03-08 2005-03-08 2005-03-08 
3: 2005-03-08 2005-03-08 2005-03-08 
4: 2005-03-08 2005-03-08 2005-03-08 
4: 2005-03-08 2005-03-08 2005-03-08 
5: 2005-03-08 2005-03-08 2005-03-08 
5: 2005-03-08 2005-03-08 2005-03-08 
6: 2005-03-08 2005-03-08 2005-03-08 
6: 2005-03-08 2005-03-08 2005-03-08 
7: 03-23-2006 03-23-2006 1969-12-31 
7: 03-23-2006 03-23-2006 1969-12-31 
8: 04-10-2006 04-10-2006 2006-10-04 
8: 04-10-2006 04-10-2006 2006-10-04 
9: 04-10-2006 04-10-2006 2006-10-04 
9: 04-11-2006 04-11-2006 2006-11-04 
10: 2/10/2006 2-10-2006 2006-10-02 
10: 02-10-2006 02-10-2006 2006-10-02 
11: 11/29/2005 11-29-2005 1969-12-31 
11: 11-29-2005 11-29-2005 1969-12-31 
12: 11/29/2005 11-29-2005 1969-12-31 
12: 11-29-2005 11-29-2005 1969-12-31 
13: 01-26-06 01-26-06 1969-12-31 
13: 01-26-2006 01-26-2006 1969-12-31 
+0

date_renderedとdate_requestedのデータ型は何ですか? –

+0

これらは両方ともVARCHARです。 – MatthewLee

答えて

1

strtotime()それは現在のタイムスタンプ(例えば-1 day ...)から時間を差し引くしようとするので、正確にそれらに-が含まれている文字列の日付をレンダリングすることができません。ハイフン-をスラッシュ/に置き換えてください。

+0

ありがとうございます。私ははっきりと考えていません。 – MatthewLee

1

PHP Supported date formats.を確認してください。これらの形式のいずれかに日付を変換します。ファイルへ

+0

大丈夫なので、私はこのことについてあまりにも遅く作業しています。私は2つの異なるフォーマットを組み合わせました。ありがとうございました:)今すぐお休みください。 – MatthewLee

0

ダンプ、S/sedの - 、ファイル上/// ./dump.txt

反復配列に文字列から各日付を分割し、その上に()のstrtotime実行します。

関連する問題