在Postgres数据库中给定此架构:
CREATE TABLE person (
id serial PRIMARY KEY,
name text,
birth_date date,
);
我如何查询表以获得每个人今天之后的下一个生日的日期?
例如,如果Bob的出生日期是2000-06-01,那么他的下一个生日将是2016-06-01。
注意:我不是在寻找birth_date
一个预定义的间隔
,而是一个人出生的下一个周年纪念日。
我已经用Python写了等效的:
def next_birthday(self):
today = datetime.date.today()
next_birthday = self.birth_date.replace(year=today.year)
if next_birthday < today:
next_birthday = next_birthday.replace(year=today.year + 1)
return next_birthday
然而,我想看看博士后是否能以更有效的方式做到这一点。
从person中选择出生日期\u日期间隔“1年”作为下一个\u生日;
SELECT
birth_date
+
cast(
date_part('year', current_date)
-
date_part('year', birth_date)
+
CASE
WHEN
date_part('month', birth_date) <
date_part('month', current_date)
OR (
date_part('month', birth_date) =
date_part('month', current_date)
AND
date_part('day', birth_date) <
date_part('day', current_date)
)
THEN 1
ELSE 0
END || ' year' as interval)
FROM person;
select birth_date,
cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
from person
where name = 'Bob'
表达式(摘录(年从年龄(birth_date))1)*间隔'1'年
计算下一个生日的年龄(完整)年。当添加到出生日期,这给了下一个生日。
强制转换对于获取真实的日期
是必要的,因为日期间隔
返回时间戳(包括时间)。
如果删除where
条件,您将获得所有“下一个”生日。
您还可以使用以下内容获得即将到来的生日列表,例如接下来的30天:
select next_birthday,
next_birthday - current_date as days_until_next
from (
select birth_date,
cast(birth_date + ((extract(year from age(birth_date)) + 1) * interval '1' year) as date) as next_birthday
from person
) as upcoming
where upcoming.next_birthday <= current_date + 30
order by next_birthday;
我试图在MySQL中找到下一个基于DOB的日期实例-例如,如果DOB是1975-12-20,我们今天运行它,那么下一个生日是2020-12-20。 同样,如果DOB为1975-12-19,则下一个生日为2020-12-19,但如果DOB为1975-12-21,则下一个生日为2019-12-21。 我可以在PHP中通过分解日期和替换年份来实现这一点,但我想尝试在MySQL中实现,因为它会更快地运行,
问题内容: 给定YYYYMMDD格式的出生日期,如何计算以岁为单位的年龄?是否可以使用该功能? 我正在寻找比现在使用的解决方案更好的解决方案: 问题答案: 我会为了提高可读性: 免责声明: 这也存在精度问题,因此也不能完全信任。它可能会关闭几个小时,有时会关闭,也可能会在夏令时关闭(取决于时区)。 相反,如果精度非常重要,我建议为此使用库。另外,可能是最准确的,因为它不依赖于一天中的时间。
问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,
问题内容: 如果我有两个日期,获取这两个日期之间的天数的最佳方法是什么? 问题答案: 如果你有两个日期对象,则可以减去它们,从而计算出一个对象。
问题内容: 我在Spring 3.0项目中使用Joda time api计算日期。现在我有一个开始日期和结束日期,我想在这两个日期之间得到每天的周末,星期六或星期日。我该如何实现? 我看了这篇Joda的时间-两个日期之间的所有星期一。它提供了一些指导,但在如何排除两个日期方面仍然含糊。 问题答案: 我想你的问题是如何 在两个日期之间的周末,星期六或星期日除外的每一天获取。 解决方案 :
根据一段代码,我在PyCharm中有这个输出 我编写代码,然后将csv文件中的列birthdate转换为datetime对象: 然后我编写一个函数来创建并返回出生日期的年龄 从代码中,我在PyCharm控制台中有这个输出 预期的输出是一个带有年龄的列,应该添加到数据帧中