Как сортировать даты формата "2 нояб. 2021 г." в python?
Есть дата-база sqlite3, нужно сортировать через неё,
примеры дат:
10 сент. 2022 г.
11 сент. 2022 г.
12 апр. 2022 г.
12 июн. 2018 г.
2 нояб. 2021 г.
29 дек. 2021 г.
29 июл. 2019 г.
29 мая. 2021 г.
29 янв. 2017 г.
3 апр. 2023 г.
3 мар. 2021 г.
31 дек. 2020 г.
31 янв. 2021 г.
4 сент. 2021 г.
5 мая. 2022 г.
6 июл. 2022 г.
7 апр. 2021 г..
7 янв. 2022 г.
8 июн. 2020 г.
9 июл. 2021 г.
9 сент. 2020 г.
Ответы (1 шт):
Автор решения: Oopss
→ Ссылка
import sqlite3
import datetime
mm = {'янв.': '01', 'фев.': '02', 'мар.': '03', 'апр.': '04', 'мая.': '05', 'июн.': '06',
'июл.': '07', 'авг.': '08', 'сент.': '09', 'окт.': '10', 'нояб.': '11', 'дек.': '12'}
dd = '''10 сент. 2022 г.
11 сент. 2022 г.
12 апр. 2022 г.
12 июн. 2018 г.
2 нояб. 2021 г.
29 дек. 2021 г.
29 июл. 2019 г.
29 мая. 2021 г.
29 янв. 2017 г.
3 апр. 2023 г.
3 мар. 2021 г.
31 дек. 2020 г.
31 янв. 2021 г.
4 сент. 2021 г.
5 мая. 2022 г.
6 июл. 2022 г.
7 апр. 2021 г..
7 янв. 2022 г.
8 июн. 2020 г.
9 июл. 2021 г.
9 сент. 2020 г.'''
conn = sqlite3.connect('dd.db')
cur = conn.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS dates(
id integer PRIMARY KEY,
fd datetime)
''')
for d in dd.split('\n'):
d = d.split()
f = datetime.datetime.strptime(f'{d[0].zfill(2)}-{mm[d[1]]}-{d[2]}', '%d-%m-%Y')
cur.execute('INSERT INTO dates(fd) VALUES (?)',(f,))
conn.commit()
s=cur.execute('SELECT fd FROM dates ORDER BY fd')
res=s.fetchall()
for i in res:
print(i[0])
2017-01-29 00:00:00
2018-06-12 00:00:00
2019-07-29 00:00:00
2020-06-08 00:00:00
2020-09-09 00:00:00
2020-12-31 00:00:00
2021-01-31 00:00:00
2021-03-03 00:00:00
2021-04-07 00:00:00
2021-05-29 00:00:00
2021-07-09 00:00:00
2021-09-04 00:00:00
2021-11-02 00:00:00
2021-12-29 00:00:00
2022-01-07 00:00:00
2022-04-12 00:00:00
2022-05-05 00:00:00
2022-07-06 00:00:00
2022-09-10 00:00:00
2022-09-11 00:00:00
2023-04-03 00:00:00