日付と時刻のリテラル に記載されているとおり :
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つのオプションがあります(要件の詳細情報なしで、漠然とした優先順位で):
-
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" });
-
MySQLの
STR_TO_DATE( )
文字列を変換する関数:INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
-
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))
-
-
文字列を手動で操作して有効なリテラルにします:
$parts = explode('/', $_POST['date']); $date = "$parts[2]-$parts[0]-$parts[1]";
警告
-
コードはSQLインジェクションに対して脆弱です。 あなたは本当に プリペアドステートメント を使用する必要があります 、SQLで評価されないパラメータとして変数を渡します。私が何について話しているのか、またはそれを修正する方法がわからない場合は、ボビーテーブル 。
-
また、はじめに で述べたように
mysql _ *
のPHPマニュアルの章へ 機能:この拡張機能はPHP5.5.0で非推奨になり、将来削除されるため、新しいコードの記述にはお勧めしません。代わりに、mysqli のいずれか または
PDO_MySQL 拡張機能を使用する必要があります。 MySQLAPIの概要 も参照してください。 MySQLAPIを選択する際のさらなるヘルプが必要です。 -
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。