2011-02-08 13 views
0

私はmysqlの日付フィールドに保存する必要がある日付があります。それは、データベースに取得する必要がありますがこの日付を適切な形式に変換するだけです

24/02/2011 

:私の文字列は次の形式である私は、SQLクエリにそうようにそれを行うことができるだろうと思った

2011-02-24 

STR_TO_DATE('.$_POST['start_date'].', \'%d,%m,%Y\') 

しかし、それは好きではありません。

別の方法がありますか?

答えて

1
$parts = explode("/", $date); 
$date = $parts[2] . '-' . $parts[1] . '-' . $parts[0]; 
1

formatが間違っているようです。あなたの文字列では、部品はカンマではなくスラッシュで区切られています。だから、これを試してみてください。

STR_TO_DATE('.$_POST['start_date'].', \'%d/%m/%Y\') 

また、使用のPHP:あなたはPHPでこれを解決することができ

$ary = strptime($date_string, '%d/%m/%Y'); 
$mysql_date = sprintf('%s-%s-%s', $ary['tm_year'], $ary['tm_mon'], $ary['tm_mday']); 
1

またはあなたは、単に実行して

$dob1=trim($_POST['txt_dob']);//$dob1='dd/mm/yyyy' format 
list($d, $m, $y) = explode('/', $dob1); 
$mk=mktime(0, 0, 0, $m, $d, $y); 
$dob_disp1=strftime('%Y-%m-%d',$mk); 
1

を使用することができます。

$date = date('Y-m-d', strtotime($_POST['start_date'])); 

私は代わりに、これをタイムスタンプとして使用し、プレゼンテーション層がこのロジックを処理できるようにするには、日付をどのように表示するかをデータベースが気にする必要はありません。

+0

です。それを直接日付にキャストします。 –

1

通常、日付の値をmysqlに投稿する前に、日付が正しい値であるかどうかを確認するためにphp関数を使用して検証を行います(これは有効な方法ではありません。 /フォーマットしていないかどうかを確認し、日付を再フォーマットしてmysqlの日付値フォーマットに適合させます。

は、ここで私は彼がDATE/DATETIME/TIMESTAMP列に挿入する場合、MySQLはその文字列を受け入れるため、彼はY-M-D形式でそれを望んでいることを知っていると思う私の機能

function prepareDate($value) { 
    if (preg_match ("/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})/", $value, $regs)) { 
     $date = "$regs[3]-$regs[2]-$regs[1]"; 
    } else { 
     if ($value === '') { 
      $date = null; 
     } else { 
      throw new Exception ("Invalid date format: $value"); 
     } 
    } 
    return $date; 
} 
関連する問題