postgresql查询当天内所有数据/指定日期所有数据 unix timestamp转换相关

版权声明

由于数据库中所有日期数据我存储是utc时间(unix timestamp with timezone),而用户大部分为非UTC时区用户,所以查询当天所有数据,指定日期所有数据少有些许繁琐。

查询当日内所有数据:

def check_order():
    sql = """
    SELECT * FROM table_name
WHERE 
(DATE_PART('day', (order_date::TIMESTAMP AT TIME ZONE 'Asia/Tokyo') 
- 
(now()::TIMESTAMP AT TIME ZONE 'Asia/Tokyo')) = 0 )
;
    """ 
    data = pgsql.selectAll(sql)
    return data

查询指定日期所有数据:

def check_order(date):
    sql = """
    SELECT * FROM table_name
WHERE 
(DATE_PART('day', (order_date::TIMESTAMP AT TIME ZONE 'Asia/Tokyo') 
- 
('%s'::DATE AT TIME ZONE 'Asia/Tokyo')) = 0 )
;
    """ % date 
    data = pgsql.selectAll(sql)
    return data

返回的date也是utc时间,如果需要显示指定时区时间可以:

SELECT xxx,xxxx,order_date AT TIME ZONE 'Asia/Tokyo' FROM table_name

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *