繁体   English   中英

MySQL 从月份和日期格式中减去日期

[英]MySQL Date subtract from Month & Date Format

我有一个愚蠢的问题,我想从格式为 DD-MON 的 MySQL 列“increment_date”(11 月 10 日、11 月 15 日等)中找到 curdate() 和接下来 30 天内的天数

在比较 curdate() 时,我尝试从该日期获取值为 8、13

tbl_officer

+--------+-----------+----------------+
| in_num | last_name | increment_date |
+--------+-----------+----------------+
|      1 | AA        | 10-Nov         |
|      2 | BB        | 12-Nov         |
|      3 | CC        | 20-Dec         |
|      4 | DD        | 22-Dec         |
+--------+-----------+----------------+

我使用以下代码来做到这一点

select last_name 
  from tbl_officer
 where increment_date>= DATE(curdate()) 
   and increment_date<= DATE_SUB(DATE(curdate()), INTERVAL 31 DAY)

但代码输出空结果。 可能出了什么问题? 谁能帮我?

编辑:

STR_TO_DATE function 用于将不同格式的字符串数据转换为日期值。

您的表数据没有年份值,因此我们需要在当前年份动态 append,例如:

SELECT * FROM tbl_officer where STR_TO_DATE(CONCAT(increment_date, '-2019'), "%d-%b-%Y")
BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 31 DAY);

所以这是我将如何完成它:

SELECT * FROM tbl_officer where STR_TO_DATE(CONCAT(increment_date, '-', YEAR(NOW())), "%d-%b-%Y") 
BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 31 DAY);

我想你想要这样的东西( 小提琴):

创建并填充您的表:

CREATE TABLE tbl_officer
(
  in_num INTEGER NOT NULL,
  last_name VARCHAR (25) NOT NULL,
  increment_date VARCHAR (10) NOT NULL
);

INSERT INTO tbl_officer VALUES (1, 'AA', '10-Nov'), (2, 'BB', '12-Nov'), (3, 'CC', '20-Dec'),
(4, 'DD', '22-Dec'), (5, 'XX', '15-Nov');  -- XX added for testing

然后运行这个 SQL (小提琴中有几个中间步骤):

SELECT last_name 
FROM tbl_officer
WHERE STR_TO_DATE(CONCAT(increment_date, '-2019'), "%d-%M-%Y") >= CURDATE() 
AND   STR_TO_DATE(CONCAT(increment_date, '-2019'), "%d-%M-%Y") <= DATE_ADD(CURDATE(), INTERVAL 1 MONTH);

结果:

last_name
       AA
       BB
       XX

与当年结合后,您可以使用str_to_date() function 与"%d-%b-%Y"模式(假设您留在当年):

select count(*) as "Number of Days"
  from tbl_officer
 where str_to_date(concat(increment_date,'-',year(curdate())),"%d-%b-%Y")
       between curdate() and curdate() + interval 30 day;

 Number of Days
 --------------
 2

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM