web-dev-qa-db-ja.com

MySQLの日付形式-日付の挿入の難しさ

昨日、別の形式で日付をクエリする方法を知りたいと思った質問をさらに進めようとしています。しかし、このメソッドを使用して挿入を行おうとしています(以下を参照)が、機能させることができません。マニュアルを確認しましたが、初心者向けではありません!

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y');
43
Phil

日付を一重引用符で囲み、括弧('yes'の後)を最後に移動します。

INSERT INTO custorder 
  VALUES ('Kevin', 'yes' , STR_TO_DATE('1-01-2012', '%d-%m-%Y') ) ;
                        ^                                     ^
---parenthesis removed--|                and added here ------|

ただし、STR_TO_DATE()関数なしで常に日付を使用できます。(Y-m-d)'20120101'または'2012-01-01'形式を使用するだけです。 MySQLのドキュメントを確認してください: Date and Time Literals

INSERT INTO custorder 
  VALUES ('Kevin', 'yes', '2012-01-01') ;
107
ypercubeᵀᴹ

文字列を適切にカプセル化していないようです。これを試して:

INSERT INTO custorder VALUES ('Kevin','yes'), STR_TO_DATE('1-01-2012', '%d-%m-%Y');

または、次のことを実行できます。

INSERT INTO custorder VALUES ('Kevin','yes'), '2012-01-01';

ただし、上記のSQLが有効であるとは確信がありません。日付部分を括弧内に移動することをお勧めします。発生している正確なエラーを提供できる場合は、問題をより直接的に解決できる可能性があります。

10
Gleeb

Mysql insertクエリの日付形式はYYYY-MM-DDです

例:

INSERT INTO table_name (date_column) VALUE ('YYYY-MM-DD');
6
Sachin Mallade

この懸念に遭遇したので、以前の回答へのアドオン:

本当に24-May-2005のようなものをDATE列に挿入したい場合、次のようなことができます:

INSERT INTO someTable(Empid,Date_Joined)
VALUES
    ('S710',STR_TO_DATE('24-May-2005', '%d-%M-%Y'));

上記のクエリでは、May(つまり、文字での月)の場合、形式は%Mである必要があることに注意してください。

NOTE:最新のMySQLバージョン8.0でこれを試しましたが、動作します!

2
Kulasangar

日付を含むPHPで文字列型の変数を使用する場合、変数は単一引用符で囲む必要があります。

$NEW_DATE = '1997-07-15';
$sql = "INSERT INTO tbl (NEW_DATE, ...) VALUES ('$NEW_DATE', ...)";
0
George Fisher