宁武皇仁光九年锦文轩刻本《异闻录》载: 扶桑画师浅溪,居泰安,喜绘鲤。院前一方荷塘,锦鲤游曳,溪常与嬉戏。 其时正武德之乱,潘镇割据,战事频仍,魑魅魍魉,肆逆于道。兵戈逼泰安,街邻皆逃亡,独溪不舍锦鲤,未去。 是夜,院室倏火。有人入火护溪,言其本鲤中妖,欲取溪命,却生情愫,遂不忍为之。翌日天明,火势渐歇,人已不见。 溪始觉如梦,奔塘边,但见池水干涸,莲叶皆枯,塘中鲤亦不知所踪。 自始至终,未辨眉目,只记襟上层迭莲华,其色魅惑,似血着泪。 后有青岩居士闻之,叹曰:魑祟动情,必作灰飞。犹蛾之投火耳,非愚,乃命数也。 ————《锦鲤抄》

【关于MySQL8日期区间范围判断】

1.场景1:根据起止日期来判断表内某日期字段是否在此区间内,并获取符合条件的数据:

mapper内查询方法中传入两个字段:起,止日期(string且yyyy-MM-dd HH:MM:SS)作为查询参数,而creation_date是datetime类型字段(datetime是具体到秒的):

此处入参已经用具体数据代替显示:2023-05-29 00:00:00和2023-05-29 23:59:59

select 1 from test_apply apply
where
date_format (apply.creation_date,
'%Y-%m-%d %H:%i:%s') between '2023-05-29
00:00:00' and '2023-05-29 23:59:59'

2.场景2:根据当天时间(年月日)查询位于表内起止日期字段范围内的数据

我们只传入一个yyyy-MM-dd的字符串作为查询参数,然后匹配表里的startDate和endDate两个日期字段,这两个均为具体到秒的datetime类型,然后可以查询到位于此期间的数据,且包含区间边界值比如0点和23:59:59:

此处入参已经用具体数据代替显示:2023-04-20

select
id,resource_num,start_date_time,end_date_time
from scheduled_down_plan

where'2023-04-20'  between date_format (start_date_time
, '%Y-%m-%d') and date_format (end_date_time
, '%Y-%m-%d')

3.场景3 近七天查询(周查询)

sql实现周查询的两种方式,当需要展示最近七天时建议使用第一种方法,严格按周查询则用第二种,注意:这两种查询的时间范围通常是不一样的

-- 方法一:查询最近七天数据, 即从今天至今天往前倒退七天
--  DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= creation_date
select xxx from 
scheduled_down_plan
where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= creation_date

-- 方法二:查询本周符合条件的数据,需要看数据库配置定义是周几为周首天,如果是周一开始那就是周一至今天,所以很可能查询结果的数据范围是不足七天的
-- YEARWEEK(date_format(esm.creation_date, '%Y-%m-%d')) = YEARWEEK(NOW())
select xxx from 
scheduled_down_plan
where 
YEARWEEK(date_format(creation_date, '%Y-%m-%d')) = YEARWEEK(NOW())
posted @ 2023-07-05 16:42  哒布溜  阅读(965)  评论(0编辑  收藏  举报