从 PostgreSQL 中的日期字段中提取星期几
-
在 PostgreSQL 中使用
EXTRACT
从日期字段中提取星期几 -
在 PostgreSQL 中使用
To_CHAR()
函数从字符串中获取日期 -
在 PostgreSQL 中使用
CASE
定义TIMESTAMPS
的天数划分
我们将在本教程中学习如何从 PostgreSQL 表中给出的 DATEFIELD
中查找星期几。我们还将学习不同的操作,你可以使用这些操作来操作和使用 DATEFIELD
中的数据。
我们使用 EXTRACT
函数来执行此类操作,它从具有 DATE
的 STRING
中检索子字段。让我们看看如何使用它。
在 PostgreSQL 中使用 EXTRACT
从日期字段中提取星期几
要提取星期几,我们可以使用 DOW
或 ISODOW
。DOW
使用 SUNDAY
作为开始日期从 0 开始日期,但是 ISODOW
使用 MONDAY
并将 SUNDAY
列为 7。
查询:
select extract (isodow from timestamp '2022-03-25');
这使用 TIMESTAMP
获取星期几并返回。
输出:
因此,在 2022 年 3 月 25 日
,如果你从 SUNDAY
开始编号为 0
,那么当天是 Friday
,你会看到 FRIDAY
是 5
。
现在假设我们选择 SUNDAY
作为我们的一天。在这种情况下,DOW
将返回 0
,而 ISODOW
将返回 7
,因为它们的模式不同。
你也可以自己测试这些值:
select extract (isodow from timestamp '2022-03-28') as iso_dow, extract (dow from timestamp '2022-03-28') as d_ow;
假设你希望 MONDAY
具有值 0
。在这样的问题中,你可以使用以下语句:
select extract (isodow from timestamp '2022-03-21') - 1;
在 TUESDAY
的情况下,你将减去 2,依此类推。
在 PostgreSQL 中使用 To_CHAR()
函数从字符串中获取日期
返回日期名称的另一个函数是 To_CHAR()
。
查询:
select to_char(timestamp '2022-03-25', 'DAY');
输出:
查询:
select to_char(timestamp '2022-03-25', 'DY');
使用上面的查询将返回 FRI
而不是 FRIDAY
。你可以阅读第二个参数中可能使用的关键字。
要获取 DAY
,仅使用以下代码。
查询:
select to_char(timestamp '2022-03-25', 'D');
PostgreSQL 文档的摘录如下:
to_char(..., 'ID')'s day of the week numbering matches the extract(isodow from ...) function, but to_char(..., 'D')'s does not match extract(dow from ...)'s day numbering.
这意味着即使模式匹配,调用 D
作为第二个参数也不匹配 DOW
语法。
在 PostgreSQL 中使用 CASE
定义 TIMESTAMPS
的天数划分
下面的代码使用了 EXTRACT
方法的扩展版本。
查询:
with a as (select extract(dow from date '2022-02-21') a ),
b as(select CASE
WHEN a.a = 0 THEN 'Sunday'
WHEN a.a = 1 THEN 'Monday'
WHEN a.a = 2 THEN 'Tuesday'
WHEN a.a = 3 THEN 'Wednesday'
WHEN a.a = 4 THEN 'Thursday'
WHEN a.a = 5 THEN 'Friday'
WHEN a.a = 6 THEN 'Saturday'
END from a )
select * from a, b;
它获取值 a
,然后 for b
检查 a
是否与给定的 CASE
语句匹配。该值被复制到 b
中(如果有)。
这将返回如下所示的输出。
输出:
我们希望你现在了解可用于从任何给定的 STRING
中提取星期几的各种方法。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub