当前位置:   article > 正文

postgresql 按日期范围查询,出生日期推年龄(python年龄推出生日期)_pg数据库通过年份算生日

pg数据库通过年份算生日

一、postgresql按照日期范围查询有好几种方法,日期字段类型一般为:Timestamp without timezone

select * from user_info where create_date >= '2015-07-01' and create_date < '2015-08-15';

select * from user_info where create_date between '2015-07-01' and '2015-08-15';

select * from user_info where create_date >= '2015-07-01'::timestamp  and create_date < '2015-08-15'::timestamp;

select * from user_info where create_date between to_date('2015-07-01','YYYY-MM-DD') and to_date('2015-08-15','YYYY-MM-DD');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、postgresql出生日期推年龄

三个基础的时间表示函数 CURRENT_DATE/CURRENT_TIME/NOW()

>SELECT CURRENT_DATE ;
>返回当前日期以 年--日(yyyy-MM-dd)的形式:
2019-05-29
>SELECT CURRENT_TIME;
>返回当日时间以 时::+时区(HH:mm:ss )的形式:
17:49:11.585308+08
>SELECT NOW();
>返回当前时间 以 年--日 时::秒(yyyy-MM-dd HH:mm:ss)的形式:
2019-01-10 17:50:45.354983+0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

然后几个计算公式
第一种是直接对日期进行操作,

SELECT (CURRENT_DATE - '1993-01-01')/365 age;
SELECT (CURRENT_DATE - '1993-01-01 16:00:00')/365 age;
#输出 26 26 两种时间格式结果一致
  • 1
  • 2
  • 3

第二种方式

SELECT age(CURRENT_DATE, '1993-01-01') age;
SELECT age(CURRENT_DATE, '1993-01-01 16:00:00') age;
#26 years 9 days
#26 years 8 days 08:00:00
#age()函数会输出精确的年龄字符串,根据传入的时间不同,输出的时间格式相对应
  • 1
  • 2
  • 3
  • 4
  • 5

如果使用now()函数计算,需要注意age()函数能输出正确结果,直接计算单位为day

select (now() - '1993-01-01')/365 age;
select (now() - '1993-01-01 16:00:00')/365 age
#26 days 01:02:21.497111
#26 days 00:59:43.688958
  • 1
  • 2
  • 3
  • 4

三、python年龄推出生日期

from datetime import datetime, date, timedelta
def getBirth(age=20):
    tday = date.today()##2019-05-29
    bird_year = []
    birthday_year = tday.year - int(age)##1999
    birthday_mg = str(birthday_year) + '-' + str(datetime.now().month) + '-' + str(
        datetime.now().day)  # 这里的月份和日期是为了补全格式-1999-05-29
    birthday_full_df = datetime.strptime(birthday_mg, "%Y-%m-%d").date()  # 格式化为date格式
    bird_year.append(str(birthday_full_df))
    return bird_year#['1999-05-29']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

##推出的日期可以用pgsql去查询年龄>20等范围

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/495610
推荐阅读
相关标签
  

闽ICP备14008679号