MySQL日期减去月份&;日期格式
我有一个愚蠢的问题,我想从格式为DD-MON(11月10日、11月15日等)的MySQL列“increment_date”中找到curdate()和接下来30天的天数 在比较curdate()时,我尝试从该日期获取值8和13 tbl_官员 我使用下面的代码来实现这一点MySQL日期减去月份&;日期格式,mysql,sql,Mysql,Sql,我有一个愚蠢的问题,我想从格式为DD-MON(11月10日、11月15日等)的MySQL列“increment_date”中找到curdate()和接下来30天的天数 在比较curdate()时,我尝试从该日期获取值8和13 tbl_官员 我使用下面的代码来实现这一点 select last_name from tbl_officer where increment_date>= DATE(curdate()) and increment_date<= DATE_SU
select last_name
from tbl_officer
where increment_date>= DATE(curdate())
and increment_date<= DATE_SUB(DATE(curdate()), INTERVAL 31 DAY)
选择姓氏
来自tbl_官员
其中增量\ u日期>=日期(curdate())
和增量日期编辑:
STR_TO_DATE
用于转换不同格式字符串数据的函数
格式化为日期值
您的表数据没有年份值,因此我们需要动态追加当前年份,例如:
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);
编辑:
STR_TO_DATE
用于转换不同格式字符串数据的函数
格式化为日期值
您的表数据没有年份值,因此我们需要动态追加当前年份,例如:
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(在fiddle中有两个中间步骤):
我想你想要这样的东西():
创建并填充表格:
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(在fiddle中有两个中间步骤):
在与当前年度组合后,您可以使用str\u to\u date()
函数和%d-%b-%Y
模式(假设您在当前年度内):
在与当前年份组合后,您可以将str_to_date()
函数与%d-%b-%Y”
模式一起使用(假设您在当前年份内):
您能发布表格/数据结构吗添加表格/数据structure@MCITTrends所以,如果你没有年值,如果有,比如说10月10日,这意味着2019年或2020年?@Bilal Siddiqui。不,它没有确定的年份值。这只是一个日期和月份。@BarbarosÖzhan感谢您指出这一点,我已经在date_ADD函数中编辑了要立即使用的答案()。您能发布表/数据结构吗?添加了表/数据structure@MCITTrends所以,如果你没有年值,如果有,比如说10月10日,这意味着2019年或2020年?@Bilal Siddiqui。不,它没有确定的年份值。这只固定了一个日期和月份。@BarbarosÖzhan感谢您指出这一点,我已经在date_ADD函数中编辑了要立即使用的答案()。如果是12月底,并且您的增量_日期是1月10日
,会发生什么。你怎么知道这是指今年还是下一年?哪个版本的MySQL?带有increment\u date>=date(curdate())和increment\u date=curdate(),当12月底,你的increment\u date
是1月10日时会发生什么。您如何知道这是指今年还是下一年?哪个版本的MySQL?带有increment\u date>=date(curdate())和increment\u date=curdate()和
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