赞
踩
一、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');
二、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
然后几个计算公式
第一种是直接对日期进行操作,
SELECT (CURRENT_DATE - '1993-01-01')/365 age;
SELECT (CURRENT_DATE - '1993-01-01 16:00:00')/365 age;
#输出 26 26 两种时间格式结果一致
第二种方式
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()函数会输出精确的年龄字符串,根据传入的时间不同,输出的时间格式相对应
如果使用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
三、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']
##推出的日期可以用pgsql去查询年龄>20等范围
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。