• Mysql与PostgreSQL时间问题


    PostgreSQL 中的单引号与双引号

    PostgreSQL 中的单引号与双引号
    在pg中的sql,单引号用来标识实际的值,双引号用来标识表名(table name)或列名(column name)等数据库中存在的值。
    如,执行一句query:

    select "name" from "students" where "id"='1' 
    

    PostgreSQL的时间问题

    使用datetime.datetime.now()插入数据库中的值是东八区时间,例如:2020-04-21 15:24:21.316479+08  

    当前遇到两种情况,配置一样均为RPC:

    1、所有时间参数都为东八区,返回的数据也是东八区

    import   random
    import psycopg2
    import  datetime
    conn = psycopg2.connect(database="bms", user="bms", password="bms@2018", host="192.168.99.200", port="5432")
    cursor=conn.cursor()
    began_time = "2020-04-21 14:00:00"
    end_time = "2020-04-21 17:00:00"
    sql = """
    select  bi_aom,timestamp from  tb_2b701b5a704e4e3cb53be00e751bd26d  where timestamp  between  '{}' and  '{}'
    """.format(began_time,end_time)
    print(sql)
    # sql = """
    # INSERT INTO "public"."tb_2b701b5a704e4e3cb53be00e751bd26d"("bi_pwr", "ai_frq", "ao_frq", "bo_onf", "bi_onf", "bi_aom", "bi_wfs", "bi_fault", "device_uuid", "timestamp") VALUES (0, NULL, NULL, 0, 0, 1, 0, 0, NULL, '%s');
    #
    # """%(datetime.datetime.now())
    cursor.execute(sql)
    
    data  = cursor.fetchall()
    print(data)
    

    2、另一种情况,数据库保存的为东八区时间,但是传入查询时间需要是utc,也就是减去八小时,返回给我时间也是utc则需要加8小时处理

     #传入时间减去八小时
     begin_time = (datetime.datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
     end_time = (datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S")- datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
     #查找pg数据
     cursor = connections['timescale'].cursor()
     #pg_sql = "SELECT mean_temperature, to_char(TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') from {} WHERE TIMESTAMP BETWEEN '{}'  and '{}' ORDER BY TIMESTAMP".format(uuid, begin_time, end_time)
     pg_sql = "SELECT mean_temperature,to_char(TIMESTAMP + '8 hour'  ,'YYYY-MM-DD HH24:MI:SS') from {} WHERE timestamp BETWEEN '{}'  and '{}' ORDER BY TIMESTAMP".format(uuid, begin_time, end_time)
     print(pg_sql)
     cursor.execute(pg_sql)
     result = cursor.fetchall()  

    具体原因未知

  • 相关阅读:
    云原生网关 Kong 和Kong 管理UI 的完全安装攻略
    微服务最强开源流量网关Kong
    如何在java中判断一个字符串是否是数字
    设计模式之责任链模式讲解
    我的第一个react native
    封装缓动动画3
    封装缓动动画2
    封装缓动动画1
    获取用户选中的文字内容
    窗口事件onresize
  • 原文地址:https://www.cnblogs.com/weidaijie/p/12745623.html
Copyright © 2020-2023  润新知