関数STR_TO_DATEを使用してMySQL()はピットを段差

1は、実用的なアプリケーションのプロジェクトにあなたがいるため同様のクエリと彼の以前のプロジェクトの、データの最後の完全な月を照会する必要があります。だから我々は、条件としてSTR_TO_DATE関数を使用します。それは間違ったものを使用していることがわかりました。WRONG:

SELECT 
       COUNT(1)
FROM 
     tf_u_user 
WHERE 
    CREATE_TIME> = STR_TO_DATE( '2019から04'、 '%Y-%のM')
                      AND 
                      CREATE_TIME <STR_TO_DATE( '2019から05'、 '%Y-%M')。

 この方法の問題点は、このようなSTR_TO_DATE(「2019から04」、「%Y-%のM」)、この関数は、日付形式が日付をフォーマットするだけでなく、場合STR_TO_DATE()は、日付がフォーマットされることですそれは2019年3月31日」に相当します。そのため、エラーが発生しました。

選択   STR_TO_DATEを(' 2019から04 '' %Y-%のM ')。---「2019年3月31日」

見つけるために、このクエリを使用し、期待される結果はそう別の方法を使用して、同じではありません。

SELECT  *  FROM tf_u_user PERIOD_DIFF(DATE_FORMAT(NOW()、' %Yの%のM ')、DATE_FORMAT(CREATE_TIME、' %Yの%mは'))= 1

最適化を追加しました:

  ピットでは、この方法解決STR_TO_DATE()関数を使用することができますが、唯一のクエリデータ先月は、捜査段階の場合、先月はどのように行うためにということ、そして少し前のデータが何をするかですか?

1は= = 2等のように変更してもよいです。

もちろん、これはただ一つの方法です。最高ではありません。しかし、実際の使用で効果的な、同時に私はこのピットを記録したいです。リマインダとしてこれを行うにしてください。次のテストでは、時間の任意の関数。私たちは経験に頼ることはできません。

また、このエラーは、独自の理解STR_TO_DATEこの機能では十分ではありません、日付も可能で書かれている場合、それは、この方法を用いて治療してはなりません。

SELECT 
       COUNT1 FROM 
     tf_u_user 
WHERE 
    CREATE_TIME > = STR_TO_DATE(' 2019年4月1日'' %Y-%M-%D ' AND 
                      CREATE_TIME < STR_TO_DATE(' 2019年5月1日'' %Y-% M-%dの");

このようなクエリはまた、4月にデータを書き込むことができます。あなたは、具体的用途に応じて選択することができます。

 

おすすめ

転載: www.cnblogs.com/xuyd1108/p/10953033.html