2

次のような行数のテーブルがあります。

+---------------------+------+
| utc                 | temp |
+---------------------+------+
| 2011-01-30 00:00:14 |   -3 |
| 2011-01-30 00:40:06 |   -4 |
| 2011-01-30 01:00:15 |   -4 |
| 2011-01-30 01:20:14 |   -4 |
| 2011-01-30 02:00:12 |   -4 |
| 2011-01-30 02:20:18 |   -4 |
| 2011-01-30 03:00:16 |   -4 |
|         ...         |  ... |

utcはタイプdatetimeで、tempタイプは ですint

temp毎日、その日の正午に最も近い値を見つけたいと思います。次のようなテーブルになる可能性があります。

+---------------------+------+
| utc                 | temp |
+---------------------+------+
| 2011-01-30 12:01:14 |   -3 |
| 2011-01-31 11:58:36 |   -4 |
| 2011-02-01 12:00:15 |   -5 |
| 2011-02-02 12:03:49 |   -7 |
| 2011-02-03 02:00:12 |   -8 |
|         ...         |  ... |

これを 1 日で見つけるのは簡単です。

SELECT utc, temp FROM table WHERE DATE(utc)='2011-01-30' ORDER BY ABS(TIMESTAMPDIFF(SECOND,utc,DATE_ADD(DATE(utc),INTERVAL 12 HOUR))) LIMIT 1;

しかし、どういうわけか、これを毎日同時に行うことは、かなり困難であることが証明されています.

(表以外の値が存在する可能性があることに注意tempしてください。)

4

1 に答える 1