sql >> データベース >  >> RDS >> Mysql

PHPmysql挿入日付形式

    日付と時刻のリテラル に記載されているとおり :

    MySQLは DATEを認識します これらの形式の値:

    • いずれかの'YYYY-MM-DD'の文字列として または'YY-MM-DD' フォーマット。 「リラックスした」構文が許可されます。日付部分の間の区切り文字として、任意の句読文字を使用できます。例: '2012-12-31' '2012/12/31' '2012 ^ 12 ^ 31' 、および' [email protected] @ 31' 同等です。

    • 'YYYYMMDD'のいずれにも区切り文字がない文字列として または'YYMMDD' 文字列が日付として意味をなす場合は、形式。例: '20070523' および'070523' '2007-05-23'として解釈されます 、ただし '071332' 違法であり(無意味な月と日の部分があります)、 '0000-00-00'になります 。

    • いずれかのYYYYMMDDの数値として またはYYMMDD 数値が日付として意味をなす場合は、形式。例: 19830905 および830905 '1983-09-05'として解釈されます 。

    したがって、文字列 '08 / 25/2012' 有効なMySQL日付リテラルではありません。 4つのオプションがあります(要件の詳細情報なしで、漠然とした優先順位で):

    1. altField を使用して、サポートされている形式で日付を提供するようにDatepickerを構成します altFormatと一緒に オプション

      <input type="hidden" id="actualDate" name="actualDate"/>
      
      $( "selector" ).datepicker({
          altField : "#actualDate"
          altFormat: "yyyy-mm-dd"
      });
      

      または、ユーザーが YYYY-MM-DDで日付を確認できることに満足している場合 フォーマットするには、 dateFormatを設定するだけです。 オプション 代わりに:

      $( "selector" ).datepicker({
          dateFormat: "yyyy-mm-dd"
      });
      
    2. MySQLの STR_TO_DATE( ) 文字列を変換する関数:

      INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
      
    3. jQueryから受け取った文字列を、PHPが日付として理解できるもの( <など)に変換します。 code> DateTime オブジェクト:

      $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
      

      そして次のいずれか:

      • 適切なフォーマットの文字列を取得します:

        $date = $dt->format('Y-m-d');
        
      • UNIXタイムスタンプを取得します:

        $timestamp = $dt->getTimestamp();
        

        次に、MySQLの FROM_UNIXTIME() 機能:

        INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
        
    4. 文字列を手動で操作して有効なリテラルにします:

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

    警告

    1. コードはSQLインジェクションに対して脆弱です。 あなたは本当に プリペアドステートメント を使用する必要があります 、SQLで評価されないパラメータとして変数を渡します。私が何について話しているのか、またはそれを修正する方法がわからない場合は、ボビーテーブル

    2. また、はじめに で述べたように mysql _ *のPHPマニュアルの章へ 機能:

      この拡張機能はPHP5.5.0で非推奨になり、将来削除されるため、新しいコードの記述にはお勧めしません。代わりに、mysqli のいずれか または PDO_MySQL 拡張機能を使用する必要があります。 MySQLAPIの概要 も参照してください。 MySQLAPIを選択する際のさらなるヘルプが必要です。

    3. DATETIMEのいずれかを使用しているようです またはTIMESTAMP 日付値を保持するための列。 MySQLのDATEの使用を検討することをお勧めします 代わりに入力してください。 DATEで説明されているように 、 DATETIME 、および TIMESTAMP タイプ

      DATE typeは、日付部分はあるが時間部分はない値に使用されます。 MySQLは、DATE値を取得して'YYYY-MM-DD'に表示します フォーマット。サポートされている範囲は'1000-01-01' '9999-12-31'へ 。

      DATETIME typeは、日付と時刻の両方の部分を含む値に使用されます。 MySQLはDATETIMEを取得して表示します 'YYYY-MM-DD HH:MM:SS'の値 フォーマット。サポートされている範囲は'1000-01-0100:00:00' to '9999-12-31 23:59:59'

      TIMESTAMP データ型は、日付と時刻の両方の部分を含む値に使用されます。 TIMESTAMP 範囲は'1970-01-0100:00:01' UTCから'2038-01-1903:14:07' UTC。



    1. MicrosoftAccessランタイムを使用する際の落とし穴

    2. SQL Server 2016:データベースのバックアップ

    3. SQLテーブルの初心者向けガイド

    4. MySQLで文字列の一部を置き換える方法