MySQL日期存储为12小时没有AM / PM

时间:2015-04-14 17:53:24

标签: php mysql

我刚刚意识到,系统上线6个月后,插入查询有一个h而不是H,所以一堆入口日期被存储为12小时的日期而没有AM / PM指标。是否有一种相对简单的方法来解决这个问题?数据库由MySQL 5.1.56-log提供支持。

我是个白痴。

1 个答案:

答案 0 :(得分:0)

我设法编写了一个Python脚本,实现了我所需要的,所以如果有其他人遇到过这个问题,这将有助于解决它。 (万岁!)

import datetime
#example data
entries = [
    ('2014-10-10 04:07:48', 1, 1136, 'JH'),
    ('2015-04-13 08:31:33', 0, 3066, 'Mez'),
    ('2015-04-13 09:38:06', 0, 3067, 'VL'),
    ('2015-04-13 10:34:54', 1, 3068, 'J.A'),
    ('2015-04-14 02:43:08', 1, 3069, 'ACM'),
    ('2015-04-14 03:35:49', 0, 3070, 'ACM'),
    ('2015-04-14 08:30:39', 0, 3071, 'Ic'),
    ('2015-04-14 09:35:07', 1, 3072, 'DK'),
    ('2015-04-14 10:38:36', 0, 3073, 'ZG'),
    ('2015-04-14 11:36:09', 0, 3074, 'VL'),
    ('2015-04-14 12:46:23', 1, 3075, 'EB'),
    ('2015-04-14 01:44:18', 0, 3076, 'EB')]

last_date = datetime.datetime.now()
last_time = last_date.time()
after_noon = False
twelve_hours = datetime.timedelta(hours=12)
for entry in entries:
    current_date = datetime.datetime.strptime(entry[0], '%Y-%m-%d %I:%M:%S')
    if current_date.date() != last_date:
        last_date = current_date.date()
        after_noon = False
        last_time = current_date.time()
    else:
        if after_noon:
            current_date = current_date + twelve_hours
        else:
            if current_date.time() < last_time:
                after_noon = True
                current_date = current_date + twelve_hours
    print "('" + str(current_date) + "', " + str(entry[1]) + ", " + str(entry[2]) + ", " + "'" + entry[3] + "'),"

这是我的MySQL导出中的列特有的,但可以很容易地适应其他模式。