gpt4 book ai didi

mysql - PostgreSQL 转换日期 (YYYY-WW) 与 MySQL ('%x-%v' )

转载 作者:行者123 更新时间:2023-11-29 05:56:48 25 4
gpt4 key购买 nike

我正在尝试将查询从 MySQL 转换为 PostgreSQL。结果略有不同,因为这两种语言如何定义一年中的一周以及包括哪些日子似乎存在差异。

相同的逻辑给出不同的日期结果:

PostgreSQL 语法 -

select date from sales where to_char(date, 'YYYY-WW') >= '2017-51' AND to_char(date, 'YYYY-WW') <= '2017-52'

MySQL 语法 -

select date from sales where 
DATE_FORMAT(date, '%x-%v') >='2017-51' and DATE_FORMAT(date, '%x-%v') <='2017-52'

当我查询 PostgeSQL 时,结果是 2017-12-17: 2017-12-24。MySQL 结果为 2017-12-18: 2017-12-25

为什么这里有区别?

最佳答案

https://www.postgresql.org/docs/10/static/functions-formatting.html

WW week number of year (1-53) (the first week starts on the first day of the year)

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

%v Week (01..53), where Monday is the first day of the week

所以这种行为是预料之中的,因为对于 postgres

t=# select to_char('2017-12-17'::date,'Day'), to_char('2017-12-17'::date,'WW');
to_char | to_char
-----------+---------
Sunday | 51
(1 row)

因为:

t=# select to_char('2017-01-01'::date,'Day'), to_char('2017-01-01'::date,'WW');
to_char | to_char
-----------+---------
Sunday | 01
(1 row)

while for MySQL :

select DATE_FORMAT('2017-01-01', '%x-%v');

2016-52

因此 2017-12-17 是周 50

关于mysql - PostgreSQL 转换日期 (YYYY-WW) 与 MySQL ('%x-%v' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48687800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com