4

このSQL文字列を使用してこのDateTimeデータをMySQLデータベースに挿入しています。'12/21/2012 1:13:58 PM'

String Query = "INSERT INTO `restaurantdb`.`stocksdb` 
                  (`stock_ID`,`stock_dateUpdated`) 
                  VALUES ('@stockID' '@dateUpdated');

そして私はこのエラーメッセージを受け取ります:

Incorrect datetime value: '12/21/2012 1:13:58 PM' for column 'stock_dateUpdated' at row 1

dateTimeでは、MySQLデータベースに入力するための正しいフォーマット/値は何ですか?

4

4 に答える 4

8

Q:DATETIME MySQL ステートメント内のリテラルの正しい形式/値は何ですか?

A: MySQL では、DATETIMEリテラルの標準形式は次のとおりです。

 'YYYY-MM-DD HH:MI:SS'

24 時間時計としての時間コンポーネント (つまり、00 から 23 の間の値として提供される時間の数字) を使用します。

MySQL には、さまざまな形式の文字列をまたはデータ型STR_TO_DATEに変換できる組み込み関数が用意されています。DATEDATETIME

したがって、別の方法として、次のDATETIMEように、その関数の呼び出しで a の値を指定することもできます。

STR_TO_DATE('12/21/2012 1:13:58 PM','%m/%d/%Y %h:%i:%s %p')

そのため、リストが次のようになっているINSERT場合は、ステートメントでMySQL に変換を行わせることができます。VALUES

... VALUES ('@stockID', STR_TO_DATE('@dateUpdated','%m/%d/%Y %h:%i:%s %p');

VALUES(リスト内の 2 つのリテラルの間に必要なコンマがないことに気付きました。)


MySQL では、リテラルの部分間の区切り文字にある程度の自由度が認められDATETIMEているため、厳密には必須ではありません。

MySQL 5.5 リファレンス マニュアル。

于 2012-12-21T05:19:05.743 に答える
2

私が使用したのは、24時間制の年月日です。PHP では であり、C#/.NET にdate('Y-m-d H:i:s')対応すると思います。yyyy-MM-dd HH:mm:ss(時間の部分はオプションで、ダッシュも同様です。)

ドキュメントで確認されたDate and Time Literals :

日付と時刻の値は、値の正確なタイプやその他の要因に応じて、引用符で囲まれた文字列や数値など、いくつかの形式で表すことができます。たとえば、MySQL が日付を期待するコンテキストでは、'2015-07-21'、'20150721'、および 20150721 のいずれかを日付として解釈します。

于 2012-12-21T05:18:53.640 に答える
1

コメントで述べたように,、値に区切り記号がありません。また、STR_TO_DATE次のように挿入する前に、最初に文字列を日付オブジェクトに変換するために使用することをお勧めします。

String Query = "INSERT INTO `restaurantdb`.`stocksdb` "+
                " (`stock_ID`,`stock_dateUpdated`) VALUES "+
               "('@stockID', STR_TO_DATE(@dateUpdated, '%m/%d/%Y %h:%i:%s %p'))";
于 2012-12-21T05:20:57.553 に答える
0

MySql DATETIME 形式は YYYY-MM-DD HH:MM:SS です - このページを参照してください

于 2012-12-21T05:24:09.083 に答える