sách gpt4 ăn đã đi

MySQL 添加月份至今但小于其他日期的日期

In lại Tác giả: Walker 123 更新时间:2023-11-29 16:40:29 24 4
mua khóa gpt4 giày nike

我遇到一个问题,例如,我需要在某个日期中添加 1 个月,而该日期是 <= 其他日期。

Ví dụ:

set @startdt = '2018-01-15';
set @maxdt = '2018-05-31';

set @dt = @startdt;

while (@dt <= @maxdt) do
select @dt;
set @dt = date_add(@dt, interval 1 month);
end while

输出将是

2018-01-15
2018-02-15
2018-03-15
2018-04-15
2018-05-15

上面是正确的,但如果 @startdt='2018-01-31' 输出将为

2018-01-31
2018-02-28
2018-03-28
2018-04-28
2018-05-28

理想情况下,我需要返回(当 @startdt='2018-01-31' 时)

2018-01-31
2018-02-28
2018-03-31
2018-04-30
2018-05-31

我尝试了以下

set @d = cast('2018-01-31' as datetime);
set @dy = day(@d);

set @d2 = date_add(@d, interval 1 month);
set @d2y = cast(year(@d2) as char(4));
set @d2m = cast(month(@d2) as char(2));
set @d2i = cast(STR_TO_DATE(concat(@d2y,',',@d2m,',',@dy), '%Y, %m, %d') as datetime);

set @d3 = date_add(@d2i, interval 2 month);
set @d3y = cast(year(@d3) as char(4));
set @d3m = cast(month(@d3) as char(2));
set @d32 = STR_TO_DATE(@d3y,@d3y, @dy, '%Y, %m, %d');

select @d, @d2i, @d3, @d32, @d2y, @d2m, @dy;

并且输出没有意义,因为 @d2i 显示为 2018-02-31@d3@d32 显示为 VÔ GIÁ TRỊ

我想我是只见树木不见森林。任何人提供的任何帮助将不胜感激。

câu trả lời hay nhất

最简单的解决方案是每次向开始日期添加逐渐增加的月份数,而不是每次向日期添加 1 个月:

set @startdt = '2018-01-31';
set @maxdt = '2018-05-31';
set @m = 1;
set @dt = @startdt;

while (@dt <= @maxdt) do
select @dt;
set @dt = @startdt + interval m month;
set @m = @m + 1;
end while

Đầu ra:

2018-01-31
2018-02-28
2018-03-31
2018-04-30
2018-05-31

关于MySQL 添加月份至今但小于其他日期的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365755/

24 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress