我希望通过PositionDateTime(即日期)从表位置顺序生成所选列的列表。但是按照降序排列希望只接受特定年份的日期。
下面的sql查询确实以参考日期的降序显示数据。但是我想执行一个过滤日期的sql查询,即不是当前年份(即2017年)。例如,我不想从下表中包括2018年和2005年的日期。我该如何执行这样的查询。
SELECT Lat, Lng, PositionDateTime FROM Position ORDER BY PositionDateTime DESC Limit 30 ;
当前表格结果
Lat | Lng | PositionDateTime |
+---------+---------+---------------------+
| 47.1168 | 8.19226 | 2018-12-11 13:19:17 |
| 47.0996 | 7.77753 | 2018-12-11 12:55:29 |
| 47.0622 | 7.45892 | 2017-12-11 12:49:14 |
| 46.8484 | 7.33423 | 2017-12-11 12:48:10 |
| 47.2489 | 7.57043 | 2017-12-11 12:29:03 |
| 47.2899 | 8.25708 | 2017-12-11 11:37:41 |
| 47.409 | 7.77917 | 2017-12-11 10:57:42 |
| 47.3941 | 8.68005 | 2017-12-11 10:41:24 |
| 0 | 0 | 2017-12-11 10:39:12 |
| 0 | 0 | 2017-11-23 15:22:25 |
| 0 | 0 | 2017-11-23 12:32:58 |
| 0 | 0 | 2017-11-23 10:24:10 |
| 0 | 0 | 2017-11-20 09:29:36 |
| 0 | 0 | 2017-11-20 09:25:35 |
| 0 | 0 | 2017-11-20 09:25:18 |
| 47.5031 | 8.69181 | 2017-11-15 16:25:08 |
| 47.4799 | 8.48702 | 2005-11-15 16:24:41
答案 0 :(得分:1)
如果在where子句中添加YEAR(PositionDateTime)
,则可以按年度过滤结果:
SELECT Lat, Lng, PositionDateTime FROM Position
WHERE YEAR(PositionDateTime) IN (2015,2017) #Enter the years you want here.
ORDER BY PositionDateTime DESC Limit 30 ;
或者仅显示当前年度的结果,请尝试:
SELECT Lat, Lng, PositionDateTime FROM Position
WHERE YEAR(PositionDateTime) = YEAR(NOW())
ORDER BY PositionDateTime DESC Limit 30 ;
要仅显示当前年度和特定月份的结果,请尝试以下操作:
SELECT Lat, Lng, PositionDateTime FROM Position
WHERE YEAR(PositionDateTime) = YEAR(NOW())
AND MONTH(PositionDateTime) = 6 # 6 = June, you can adjust this.
ORDER BY PositionDateTime DESC Limit 30 ;