__timeFilter does not produce the correct time range in SQL

My server and my sensors that collect data are in Switzerland (CEST timezone +0200). I store all the dates in UTC timestamp format in the database. It is Sep 9, 2019 13:22pm. When I click on “Generated SQL”, I see the following time filter:
WHERE time BETWEEN FROM_UNIXTIME(1568006519) AND FROM_UNIXTIME(1568028119)
The time filter I have selected is for the last 6 hours. If I check those times on the server, I get the following:

SELECT FROM_UNIXTIME(1568028119), FROM_UNIXTIME(1568006519);
| 2019-09-09 13:21:59 | 2019-09-09 07:21:59 |

But when I look at the graph, the data starts from 4 hours ago, and not 6 hours ago. The gap between 6 and 4 hours ago is empty, even though I do have data there. The range on the x-axis is fine though.
What am I doing wrong?

Some additional command outputs.
$ date Mon Sep 9 13:31:04 CEST 2019 $ timedatectl Local time: Mon 2019-09-09 13:35:24 CEST Universal time: Mon 2019-09-09 11:35:24 UTC RTC time: Mon 2019-09-09 11:35:24 Time zone: Europe/Zurich (CEST, +0200) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no!

Capture|606x500

UPDATE:
I changed the datatype in mysql from TIMESTAMP to DATETIME. I still have the same problem.
I also completely removed grafana and reinstalled it. I had to reconfigure everything again, so I am pretty sure I removed all configuration and database files. Still have the same problem.

UPDATE 2:
I changed the timezone on the Ubuntu server, where mysql and grafana are hosted, to UTC, and now the time filter is working normally. This, however, is not an acceptable workaround for me.