Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.06.2022
Сообщений: 6

Перевод формата даты

18.08.2023, 17:25. Показов 1326. Ответов 8

Студворк — интернет-сервис помощи студентам
В базе данных SQL в таблице есть столбец дата в числовом формате UNIX-времени. Хочу чтобы при выведении таблицы в QColumnView дата имела формат 'дд.мм.гггг'. Таблица выводится, но дата не меняется. Ошибок тоже не пишет. Не могу понять в чем проблема.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from PyQt6 import QtCore, QtSql
from datetime import datetime, time
 
def sends_query_displays_table (query):
    """Посылает запрос в базу данных и возвращает результат"""
 
    sqm = QtSql.QSqlQueryModel()# Создаем модель
    sqm.setQuery(query)   
 
    for col in range(sqm.columnCount()):
        col_name = sqm.record().fieldName(col)
        if col_name.startswith("data_contract"):
            sqm.setHeaderData(col, QtCore.Qt.Orientation.Horizontal, col_name)
            for row in range(sqm.rowCount()):
                unix_time = sqm.record(row).value(col_name)
                formatted_date = unix_timestamp_to_formatted_date(unix_time)
                sqm.setData(sqm.index(row, col), formatted_date)
    return sqm
 
def unix_timestamp_to_formatted_date(timestamp):
    """Преобразует UNIX-время в формат 'дд.мм.гггг'"""
    dt = datetime.fromtimestamp(timestamp).strftime("%d.%m.%Y")
    return dt
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.08.2023, 17:25
Ответы с готовыми решениями:

Изменением формата даты
Помогите пожалуйста разобрать. Нужно что бы в строку можно было вводить дату в формате %d.%m.%y, а программа изменяла дату в формат Y-%m-%d...

Перевод формата времени из am/pm в 24 формат
ФОРМАТ ВВОДА: Целое число A — который сейчас час после полудня у героев диалога, A >= 1, A < 12 Целое число B — сколько сейчас...

Перевод из RGB формата в HEX Python
Подскажите, пожалуйста, как можно преобразовать следующие данные... Вот есть код, который получает +- следующий результат ...

8
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,413
Записей в блоге: 3
19.08.2023, 07:23
Цитата Сообщение от KravchV Посмотреть сообщение
В базе данных SQL
KravchV, эта фраза - вообще полная чушь. Какая СУБД у Вас используется? SQLite? MS SQL? MySQL? PostgreSQL?
Да и при чем тут вообще СУБД? Задавайте вопрос в разделе того ЯП, на котором написан приведенный Вами код.
0
0 / 0 / 0
Регистрация: 05.06.2022
Сообщений: 6
19.08.2023, 07:47  [ТС]
Прошу простить, я тут не частый гость. SQLite
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,413
Записей в блоге: 3
19.08.2023, 11:23
Хорошо, с СУБД понятно. Но, надеюсь, Вы в свою очередь, понимаете, что вопрос Ваш непосредственно к СУБД отношения не имеет, а касается работы Вашего клиентского приложения, написанного на ЯП... А на каком, кстати?
0
0 / 0 / 0
Регистрация: 05.06.2022
Сообщений: 6
19.08.2023, 17:33  [ТС]
Да, теперь понимаю, что залез не в ту тему. Язык Python. Прошу помочь перевести мой вопрос в нужную тему.
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,413
Записей в блоге: 3
20.08.2023, 05:40
Да без проблем.
1
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
20.08.2023, 14:13
Цитата Сообщение от KravchV Посмотреть сообщение
sqm.setData(sqm.index(row, col), formatted_date)
Есть подозрение, что при изменении данных поля, строка приводится обратно к timestamp.
Как правило, структуры работающие с выборками БД кроме самих данных содержат информацию о типе данных. И если какой-то столбец содержит тип Дата, строку в него записать не получиться (даже в python).
Преобразование нужно делать в месте непосредственного использования данных.
0
0 / 0 / 0
Регистрация: 05.06.2022
Сообщений: 6
20.08.2023, 20:11  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
sqm.setData(sqm.index(row, col), formatted_date)
Вы правы насчет строки. setData возвращает False. т.е. он не сохраняет изменения в модель. Поменял модель на QSqlTableModel. Однако изменяется формат даты первой строки таблицы. Остальные строки выводит как и прежде.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sends_query_displays_table (query):
    """Посылает запрос в базу данных и выводит в таблицу"""
    sqm = QtSql.QSqlTableModel()# Создаем модель
    sqm.setQuery(query)    
 
    for col in range(sqm.columnCount()):
        col_name = sqm.record().fieldName(col)
        if col_name.startswith("dat"):
            for row in range(sqm.rowCount()):
                unix_time = sqm.record(row).value(col_name)
                formatted_date = unix_timestamp_to_formatted_date(unix_time)
                flag= sqm.setData(sqm.index(row, col), str(formatted_date))
                print (flag)
    return sqm
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.08.2023, 14:40
Лучший ответ Сообщение было отмечено KravchV как решение

Решение

Python
1
2
3
4
5
6
7
8
9
def get_model():
    sql = '''\
select 
    strftime('%d.%m.%Y', datetime(col / 1000, 'unixepoch', 'localtime') 
from tablename
'''
    model = QtSql.QSqlTableModel()
    model.setQuery(sql)
    return model
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2023, 14:40
Помогаю со студенческими работами здесь

Перевод файла из формата txt в формат json
Есть файлы такого типа разделённые звездочками *** Новости Украины 5:40 AM - 13 Sep 2018 User: 24todaynetua. Европарламент поддержал...

Перевод из 24-часового формата в 12-часовой формат времени
Многие предпочитают 24-часовой формат времени, но много где в мире вы столкнетесь с тем, что люди используют 12-часовой формат времени. ...

Перевод даты из 12-часового формата в 24-часовой
Добрый день! подскажите! может кто сталкивался с датами: как перевести дату 08.06.2017 02:25:51 PM(тип поля стоит datetime) в...

Перевод даты из одного формата в другой
есть переменная со строкой типа 2016-12-22 18:30:55 нужно ее переделать в строку 22.12.2016 18:30

Перевод даты из формата год.номер_дня в обычную дату
База данных содержит дату в Юлианскои формате. то есть не совсем. Год показывает в Григорианском формате. Например: 15.253( 2015-год и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru