MySQL - 尝试 select 从上个月第一天午夜到本月第一天午夜的范围
MySQL - trying to select a range from the first day of previous month at midnight, to the first day of the current month at midnight
我正在使用 MySQL,并尝试进行特定时间范围的查询。例如,如果现在是八月,我将尝试查询从 9 月 1 日午夜到 8 月 1 日午夜。
到目前为止,由于之前的问题,我能够成功 selected 日期范围,但我遇到的问题是:
-我的数据库时间列是UTC,我需要转换成我的时区
- 我无法将具体时间添加到我的查询中。
这是我当前的查询:
select column1,date_time_column from table.x
where date_time_column > concat(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day
and date_time_column < concat(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
order by date_time_column
;
我试图将我的具体时间设置为 05:00:00,这是我数据库中的午夜,但现在当我 运行 我的 select 时,它仍然显示 00:00:00 次,这让我觉得我的时间不适用,或者我添加时间的语法不正确。任何帮助将不胜感激。
使用DATE_FORMAT
代替CONCAT
SELECT
DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day,
DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day | DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
:---------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------
2021-07-01 05:00:00 | 2021-08-01 05:00:00
db<>fiddle here
select column1,date_time_column from table.x
where date_time_column > DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day
and date_time_column < DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
order by date_time_column
;
我正在使用 MySQL,并尝试进行特定时间范围的查询。例如,如果现在是八月,我将尝试查询从 9 月 1 日午夜到 8 月 1 日午夜。
到目前为止,由于之前的问题,我能够成功 selected 日期范围,但我遇到的问题是: -我的数据库时间列是UTC,我需要转换成我的时区 - 我无法将具体时间添加到我的查询中。
这是我当前的查询:
select column1,date_time_column from table.x
where date_time_column > concat(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day
and date_time_column < concat(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
order by date_time_column
;
我试图将我的具体时间设置为 05:00:00,这是我数据库中的午夜,但现在当我 运行 我的 select 时,它仍然显示 00:00:00 次,这让我觉得我的时间不适用,或者我添加时间的语法不正确。任何帮助将不胜感激。
使用DATE_FORMAT
代替CONCAT
SELECT DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day, DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day | DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day :---------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- 2021-07-01 05:00:00 | 2021-08-01 05:00:00
db<>fiddle here
select column1,date_time_column from table.x
where date_time_column > DATE_FORMAT(last_day(curdate() - interval 2 month), '%Y-%m-%d 05:00:00') + interval 1 day
and date_time_column < DATE_FORMAT(last_day(curdate() - interval 1 month), '%Y-%m-%d 05:00:00') + interval 1 day
order by date_time_column
;