sql >> データベース >  >> RDS >> Mysql

MySQLは分まで同様のDATETIMEを選択します

    このMySql式は、秒がゼロになっているDATETIME値を返します。

    CONVERT(DATE_FORMAT(table.column,'%Y-%m-%d-%H:%i:00'),DATETIME)
    

    これを見てください。 https:// dev .mysql.com / doc / refman / 8.0 / en / date-and-time-functions.html#function_date-format 。したがって、次のようなクエリが発生する可能性があります。

    SELECT Table1.TimeSTamp1, Table1.Param1, Table2.TimeStamp2, Table2.Param2 
        FROM Table1
        JOIN Table2 ON  CONVERT(DATE_FORMAT(Table1.TimeStamp1,'%Y-%m-%d-%H:%i:00'),DATETIME)
                     =  CONVERT(DATE_FORMAT(Table2.TimeStamp2,'%Y-%m-%d-%H:%i:00'),DATETIME)
        WHERE ... conditions for the other parameters of Table1 and Table2... 
    

    ただし、注意してください。自動生成されたタイムスタンプは、浮動小数点数のようなものです。それらの2つが互いに等しくなるとき、それはただの幸運です。タイムスタンプを分単位で切り捨てても問題ない場合がありますが、あるタイムスタンプを別のタイムスタンプから減算して、差(または差の絶対値)を比較する方がよい場合もあります。

    また、この結合は、すべての値に対して2番目の切り捨て関数を実行する必要があるため、遅くなり、インデックスを使用できなくなります。

    TIMESTAMPDIFF() 。ただし、注意してください。この関数は、互いに数日以内のタイムスタンプの秒レベルでのみ正しく機能します。それは優雅に溢れます(私が非常に苦痛で発見したように)。

    タイムスタンプを挿入するときに、タイムスタンプを分に切り捨ててみることができます。これにより、インデックスを作成できます。



    1. SQL ServerManagementStudioでクエリ履歴を表示する方法

    2. SQLServerデータベースの破損の原因と解決策を調べる

    3. PL / SQLを介してOracleをエクスポートしようとすると、日付は0000-00-00になります。

    4. 2つのテーブルをユニオンとマージして新しいテーブルを作成します