2

私はこれをうまく機能させるために約2時間努力してきました。11/18/2012のように入力された日付をmysqlタイムスタンプに変換しようとしていますが、試したものはすべて、データベースで0000-00-0000:00:00またはNULLとして終了します:(I ' m PHP + MYSQLを使用しているので、どちらのソリューションも素晴らしいでしょう

4

8 に答える 8

9

これを試して

 $release_date=$_POST['release_date'];
    echo date("Y-m-d H:i:s",strtotime($release_date));
于 2012-11-29T11:50:36.390 に答える
1

PHPのDateTimeが救いの手を差し伸べます!

$datetime = new DateTime($alternativeFormat);
echo $datetime->format('Y-m-d H:i:s'); // mysql format

MySQLによるデータの変更を残すことも可能ですが、私はそれに反対することをお勧めします。オブジェクトを使用することによりDateTime、クエリを開いたままにして、他の形式もサポートできるようにします。

于 2012-11-29T11:48:09.687 に答える
1

使用STR_TO_DATE

SELECT TIMESTAMP(STR_TO_DATE('11/18/2012','%m/%d/%Y'))

http://sqlfiddle.com/#!2/d41d8/4363/0

あなたはあなたが試したと述べました:

UNIX_TIMESTAMP(STR_TO_DATE('$release_date','%m/%d/%y'))

これが機能しない理由は、UNIX_TIMESTAMPの戻り型が符号なし整数であり、ではないためTIMESTAMPです。TIMESTAMPこれが、列に挿入できない理由です

于 2012-11-29T11:49:53.223 に答える
0

私はこのようなことを試みます。

$sDate = '11/18/2012';

$aDate = explode('/', $sDate);

$sMySQLTimestamp = sprintf(
   '%s-%s-%s 00:00:00',
    $aDate[2],
    $aDate[0],
    $aDate[1]
);

var_dump($sMySQLTimestamp);
> string(19) "2012-11-18 00:00:00"
于 2012-11-29T11:54:43.913 に答える
0

試しましたか:http strtotime()//php.net/manual/en/function.strtotime.php

または、「/」を展開してから、http mktime()//php.net/manual/en/function.mktime.phpを使用します。

$parts = explode('/', $date);
$timestamp = mktime(0, 0, 0, $parts[0], $parts[1], $parts[2]);

または、ここに投稿された回答の他の提案はありますか?

于 2012-11-29T11:47:07.350 に答える
0

私の好きな方法:

$date = '10/1/2012';
$mysqlDate = date('Y-m-d', strtotime($date));
于 2012-11-29T11:51:34.760 に答える
0

その例の日付を2012/11/18として入力できますか?

はいの場合は使用

select convert('2012/11/18' ,DATETIME) 

またはあなたが使用することができます

 select convert(str_to_date('11/18/2012','%m/%d/%Y'),DATETIME)
于 2012-11-29T11:55:32.700 に答える
0

正しい答えは、あなたが何をしようとしているのかによって異なりますが、ほとんどの場合、これらの組み合わせです。

  1. PHPでタイムスタンプを表すには、文字列ではなくDateTimeオブジェクトを使用します。(データベースに書き込むときではなく、入力時に変換します)。
  2. プレースホルダーを持つデータベースインターフェイスを使用し、DateTimeである値を入力すると、それらを適切な文字列形式に自動的に変換します

これにより、MySQLで期待されるネイティブ形式に変換したり、認識したりする必要がなくなります。

于 2012-11-29T11:59:38.560 に答える