MySql - 使用 CONVERT_TZ 时查找 "today"和 "yesterday"

标签 mysql convert-tz

在 MySql 中使用 CONVERT_TZ() 时,我正在努力获得“今天”和“昨天”的正确定义。我的日期存储在 UTC 中,我需要查询 MST 时区中出现的日期,所以这样的事情会产生正确的一天开始时间:

select DATE_FORMAT(convert_tz(utc_timestamp(),'+00:00','-07:00'), '%m/%d/%Y 00:00:00')

但是,当我将它放入查询中时,它似乎不起作用。

此查询正确生成了过去 24 小时,但不是“今天”(即从午夜到现在的时间)。

SELECT * FROM tablename 
WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') >= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 1 DAY),'+00:00','-07:00')

然后以类似的形式,这会产生一个查询,该查询是 24 小时前的 24 小时,但不是“昨天”(即昨天从 00:00:00 到 23:59:59,MST 时区昨天的日期).

select * from tablename  
AND  CONVERT_TZ(insertdate,'+00:00','-07:00') >= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 2 DAY),'+00:00','-07:00')
AND  CONVERT_TZ(insertdate,'+00:00','-07:00') <= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 1 DAY),'+00:00','-07:00')

最佳答案

您需要使用 date_format 函数格式化日期并将时间设置为“00:00:00”,今天的查询是 SELECT * FROM 表名 WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') >= date_format(convert_tz(utc_timestamp(),'+00:00','-07:00'), '%y-%m -%d 00:00:00');

昨天: SELECT * FROM 表名 WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') 在 date_format(convert_tz(date_sub(utc_timestamp(), interval 1 day),'+00:00','-07:00'), '%y-%m-%d 00:00:00') and date_format(convert_tz(date_sub(utc_timestamp(), interval 1 day),'+00:00','-07:00'), '%y -%m-%d 23:59:59');

关于MySql - 使用 CONVERT_TZ 时查找 "today"和 "yesterday",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53655657/

相关文章:

mysql - MYSQL查询中高效转换时区的最佳方式

php - 没有 LIMIT 子句的 codeigniter 事件记录获取查询和查询

java - 在 mysql 表中保存一个字符串数组

mysql - 本地和远程数据存储同步

mysql - 如何在 MySql 选择查询中将 UTC 日期转换为本地时区

mysql - CONVERT_TZ 函数不起作用 : Time zone data for MySQL

mysql - 查询之间的日期不返回准确的结果

MYSQL 获取变量数量不正确

MySQL 查询当前 GMT 时间

MySQL:UTC 到本地时区的自动映射