日付と時刻のリテラル に記載されているとおり :
MySQLは
DATEを認識します これらの形式の値:
いずれかの
'YYYY-MM-DD'の文字列として または'YY-MM-DD'フォーマット。 「リラックスした」構文が許可されます。日付部分の間の区切り文字として、任意の句読文字を使用できます。例:'2012-12-31'、'2012/12/31'、'2012 ^ 12 ^ 31'、および' example@sqldat.com @ 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タイプ :DATEtypeは、日付部分はあるが時間部分はない値に使用されます。 MySQLは、DATE値を取得して'YYYY-MM-DD'に表示します フォーマット。サポートされている範囲は'1000-01-01''9999-12-31'へ 。DATETIMEtypeは、日付と時刻の両方の部分を含む値に使用されます。 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。