Оператор SQL для преобразования формата даты и времени в некоторые столбцы - PullRequest
3 голосов
/ 21 декабря 2010

У меня есть база данных SQLite, в которой некоторые столбцы являются строками даты и времени в формате 1/2/2000 3:45:56.

Существует ли оператор SQL, который может преобразовывать эти значения в строки в формате, подобном ISO-8601 (2000-01-02 03:45:56)?

(Один из возможных способов сделать это не в SQL - экспортировать базу данных в виде файла CSV и использовать Python с его модулями csv и datetime для анализа столбцов.)

Ответы [ 2 ]

1 голос
/ 21 декабря 2010
0 голосов
/ 21 декабря 2010

Преобразование другим способом будет простым: вы можете использовать strftime .Но для этого необходимо, чтобы дата была в формате ISO 8601 (или в юлианской или Unix-дате), чтобы начать с.

Вы могли бы сделать это в SQL с манипулированием строками, но это было бы ужасносложный.Самый простой способ - создать пользовательскую функцию.

def fix_timestamp(timestamp):
    return datetime.datetime.strptime(timestamp, '%m/%d/%Y %I:%M:%S %p') \
           .strftime('%Y-%m-%d %H:%M:%S')

db = sqlite3.connect('...')
db.create_function('FixTimestamp', 1, fix_timestamp)

Тогда вы можете сделать UPDATE TheTable SET TheColumn = FixTimestamp(TheColumn).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...