Чтобы расширить комментарий @forpas, SQLite не имеет типа данных TIMESTAMP
, поэтому при вставке значений в столбцы fromDateTime
и toDateTime
они преобразуются в один из классов хранения данных 5 SQLite. : NULL
, INTEGER
, REAL
, TEXT
, BLOB
. Поскольку в INSERT
ошибки нет, создается впечатление, что SQLite распознал значение как метку времени, хотя на самом деле это значение было обработано как TEXT
. Теперь, чтобы использовать эти значения в любой из функций Дата и Время SQLite, они должны быть либо ISO-8601
совместимой строкой, словом now
, либо числом (интерпретируемым либо как число в юлианских днях, либо как Unix отметка времени зависит от контекста). Итак, вам нужно изменить время на формат YYYY-MM-DD hh:mm:ss
, т.е.
Insert INTO Appointments ( fromDateTime, toDateTime, name, description ) VALUES
('2020-03-21 15:00:00', '2020-03-21 16:00:00', 'Test', 'Test Description'),
('2020-03-22 15:00:00', '2020-03-22 16:00:00', 'Test 2', 'Test 2 Description'),
('2020-03-22 16:00:00', '2020-03-22 17:00:00', 'Test 2', 'Test 2 Description'),
('2020-03-22 17:00:00', '2020-03-22 18:00:00', 'Test 2', 'Test 2 Description'),
('2020-03-21 00:00:00', '2020-03-25 23:59:59', 'Test', 'Test Description'),
('2020-03-27 08:00:00', '2020-03-21 12:00:00', 'Test', 'Test Description'),
('2020-03-02 08:00:00', '2020-03-10 12:00:00', 'Joelle', 'Test Joelle');
Обратите внимание, что datetime
просто вызывается со столбцом в качестве параметра и возвращает строку в формате ISO-8601. Чтобы получить формат YYYY-MM-DD
, вам также необходимо использовать strftime
. Таким образом, ваш запрос становится:
SELECT strftime('%d - %m - %Y', fromDateTime) AS y,
strftime('%Y-%m-%d', fromDateTime) AS x
FROM Appointments
И вывод:
y x
21 - 03 - 2020 2020-03-21
22 - 03 - 2020 2020-03-22
22 - 03 - 2020 2020-03-22
22 - 03 - 2020 2020-03-22
21 - 03 - 2020 2020-03-21
27 - 03 - 2020 2020-03-27
02 - 03 - 2020 2020-03-02
Демо на dbfiddle