mysql - 如何按日期格式搜索列?

标签 mysql sql

我正在尝试在一段时间内根据日期和月份同时条件在 2 列之间创建查询,如下所示:

这是 demo

信息如下:

CREATE TABLE clients
 (date_birth date, [date_anniversary] date)
;

INSERT INTO clients
 ([date_birth], [date_anniversary])
VALUES
('1911-01-04',NULL ),('1921-01-05',NULL ),('1931-01-06',NULL ),('1941-01-07',NULL ),
('1951-01-08',NULL ),('1961-01-09',NULL ),('1971-01-10',NULL ),('1981-01-11',NULL ),
('1991-01-12',NULL ),(NULL, '1998-02-13'),(NULL, '1999-02-14'),(NULL, '2000-02-15'),
(NULL, '2001-02-16'),(NULL, '2002-02-17'),(NULL, '2003-02-18'),(NULL, '2004-02-19'),
(NULL, '2005-02-20'),(NULL, '2006-02-21');

条件是:

since "04-01" until "13-02"
show all from clients where date_birth BETWEEN "04-01" AND "13-02" OR date_anniversary "04-01" AND "13-02" 

这应该是输出:

('1911-01-04',NULL ),
('1921-01-05',NULL ),
('1931-01-06',NULL ),
('1941-01-07',NULL ),
('1951-01-08',NULL ),
('1961-01-09',NULL ),
('1971-01-10',NULL ),
('1981-01-11',NULL ),
('1991-01-12',NULL ),
(NULL, '1998-02-13'),

我试过了,但只用了一个月:

select date_birth from clients 
where month(date_birth) BETWEEN '00' AND '01'

也尝试过:

SET @date1 := 01-14;
SET @date2 := 02-20;

select date_birth from clients
where date_birth BETWEEN @date1 AND @date2 

有人可以帮助我吗?

最佳答案

你可以使用Mysql的月和日函数来做到这一点

SELECT date_birth ,date_anniversary
FROM clients
WHERE 
(
MONTH(date_birth) >= 01 AND MONTH(date_birth) <= 01
AND DAY(date_birth) >= 01 AND DAY(date_birth) <= 31
)
OR
(
MONTH(date_anniversary) >= 01 AND MONTH(date_anniversary) <= 01
AND DAY(date_anniversary) >= 01 AND DAY(date_anniversary) <= 31
)

Fiddle Demo

使用 Mysql 的 date_format 函数只需按日和月格式化您的列就可以与提供的相同格式的范围进行比较,还可以按照这种 '%m-%d' 格式提供您的参数

select date_birth ,date_anniversary
from clients
where date_format(date_birth,'%m-%d') BETWEEN '01-01' AND '01-31'
or
date_format(date_anniversary,'%m-%d') BETWEEN '01-01' AND '01-31'

Fiddle demo 2

在变量中存储值

SET @start:='01-01';
SET @end:='01-31';
SELECT date_birth ,date_anniversary
FROM clients
WHERE DATE_FORMAT(date_birth,'%m-%d') BETWEEN @start AND @end
OR
DATE_FORMAT(date_anniversary,'%m-%d') BETWEEN @start AND @end

Fiddle demo 3

关于mysql - 如何按日期格式搜索列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452487/

相关文章:

mysql - 将 Coldfusion 结构插入数据库

mysql - 在 mysql 数据库中创建表,错误 1064 (42000)?

python - BigQuery - 在分区内嵌套操作,以便聚合具有 170 亿条记录的表中的连续记录

sql - 获取Access中特定列为空的所有记录

sql - 如何从 PostgreSQL 触发器发送电子邮件?

php - 你能选择并加入一个mysql查询吗?

php - 点击带有链接的按钮后如何更新Mysql数据库?

php - 有人能解释一下为什么我的 MySQL 表数据没有显示吗?

mysql - DELETE FROM mytable WHERE column LIKE '%word%' 问题

sql - 将一个表的行值与另一个表的列值进行比较,如果为真,则说真或假