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

关于flask-xcaptcha的神奇bug

今天在写🐎的时候发现,如果是下面这个结构:

<table>
   <form action="{{ url_for('test') }}" method="POST">
        <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
        {{ xcaptcha }}️️
        <button type="submit" class="btn btn-primary">Submit</button>
    </form> 
</table>

把form套在table里面会导致xcaptcha.verify = False
具体发病原因没仔细研究,做个记录。