gpt4 book ai didi

mysql - 消除在单个 SELECT 语句中两次计算相同值的情况

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

我需要修改日期时间字段的输出,以便它返回该日期所在周的第一天。例如,如果日期是 9/2/2016,则应返回 8/29/2016,因为那是该周的星期一(我想要星期一,而不是星期日)。但是,我还需要将时间戳转换为不同的时区。结果是我最终不得不转换时区两次:

CONVERT_TZ(timestamp, '+00:00', '+05:00') - INTERVAL WEEKDAY(CONVERT_TZ(timestamp, '+00:00', '+05:00')) day

我不能简单地对 UTC 日期时间执行 INTERVAL 计算,然后对结果进行时区转换,因为时区转换可能会影响 WEEKDAY 函数的结果,例如对于 EST,日期时间 2016-9-5 00:00 UTC 实际上会落在 9/4,从而导致它属于不同的一周。

有没有办法避免在 SELECT 语句中两次调用 CONVERT_TZ

最佳答案

您可以将其放入子查询中。

SELECT converted - INTERVAL WEEKDAY(converted) AS day
FROM (SELECT CONVERT_TZ(timestamp, '+00:00', '+05:00') AS converted
FROM yourTable) AS x

另一种方法是分配用户变量。为了能够使用它两次,请将赋值放入 IF() 表达式的条件部分 - 这确保赋值将在使用之前完成。

IF(@converted := CONVERT_TZ(timestamp, '+00:00', '+05:00'),
@converted - INTERVAL(WEEKDAY(@converted) DAY,
NULL) AS day

关于mysql - 消除在单个 SELECT 语句中两次计算相同值的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358230/

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