私はそうのような二つのテーブルがあるとし私の参加基準としてTime
フィールドを使用していますか?すなわち:MySQLのDATETIMEカラム上の/比較に参加(<5.6.4 and > 5.6.4)
SELECT E.*,P.* FROM Events E JOIN Position P ON E.Time = P.Time
OR、偶数単に日時の値(パラメータ化された値は、秒の小数部を含むことができることを考慮 - MySQLは常に受け入れている)と比較例
SELECT E.* FROM Events E WHERE E.Time = @Time
私はミリ秒なし日時フィールドを格納(バージョン5.6.4前)MySQLを理解しています。だから私はこのクエリはOK機能すると仮定します。しかし、バージョン5.6.4では、MySQLはdatetimeフィールドをミリ秒で保存できるようになりました。 などの関数を使用してdatetime値が挿入されていると仮定すると、ミリ秒は切り捨てられます(< 5.6.4)。しかし、バージョン5.6.4以降では、これが動作しない可能性があります。 私は、2度目の正確さだけに関心があります。
誰もが次の質問に答えることができる場合がいただければ幸いです:一般的には
- を、どのようにMySQLは、互いに対する日時フィールドを比較しない( 上記のクエリを検討してください)。
- 上記のクエリは問題ありませんか? フィールドにインデックスを使用していますか? (MySQL < 5.6.4)
- ミリ秒を除外する方法はありますか?私。挿入時に 条件付き結合/選択など? (MySQL> 5.6.4)
- 上記の結合クエリは機能しますか? (MySQLの> 5.6.4)
EDIT
私は、私は日付時刻をキャストすることができます答えているものに感謝を知っているが、私はの根に取り組むためにしようとしていますここでの問題(ストレージの種類/定義が変更されたという事実)と私は自分のクエリで関数を使いたくない。これは、すべてのクエリを書き直す必要はありませんが、インデックスなどを適用するクエリを最適化する私のすべての作業を無効にします。
EDIT2
そこに誰もが第二の精度を使用してDATETIME
フィールドに参加しない理由を提案することはできますか?
だけでなく、あなたの3番目の質問のために、これは私はあなたが合格しない限り、 '5.6.4以降ではミリ秒単位での要因ではないだろう)(NOW'信じるトリック –
を行います。このDATE(time_column)を使用します。たとえば、 "*分数秒の精度*"を示すパラメータ(0-6)であるので、パラメータを 'NOW()'に渡さない限り、結合には問題ないはずです。その他[ここではhttp: /dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_now) –
DATETIMEに使用されるタイムゾーンは、http:// stackoverflowのようにタイムゾーンに「ジャンプ」します。 .com/questions/6841333/why-is-subtracting-these-two-times-in-1927-an-strange-result –