在mysql数据库中添加一整月的日期

Posted

技术标签:

【中文标题】在mysql数据库中添加一整月的日期【英文标题】:Add dates of one whole month in mysql database 【发布时间】:2015-11-16 08:57:30 【问题描述】:

谁能告诉我如何在mysql数据库中添加一个整月的日期。现在我一次添加一个日期。

【问题讨论】:

制作一个脚本并将日期插入到月末日期.. @bluto 感谢您的快速回复。您能给我一个例子吗? 请检查amdixon's 答案.. 可能会有所帮助.. 【参考方案1】:

此查询生成给定月份的所有天数。

我在post 中找到了这个。

当您将NOW() 函数更改为您想要的任何日期时,它会生成该月的日期。您也可以将其与您的查询结合使用,或者您可以将其与 INSERT [(col_name,...)] SELECT ... 语句一起使用以将所有日期插入到表中。

SELECT date_field
FROM
(
    SELECT
        MAKEDATE(YEAR(NOW()),1) +
        INTERVAL (MONTH(NOW())-1) MONTH +
        INTERVAL daynum DAY date_field
    FROM
    (
        SELECT t*10+u daynum
        FROM
            (SELECT 0 t UNION SELECT 1 UNION SELECT 2 UNION SELECT 3) A,
            (SELECT 0 u UNION SELECT 1 UNION SELECT 2 UNION SELECT 3
            UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7
            UNION SELECT 8 UNION SELECT 9) B
        ORDER BY daynum
    ) AA
) AAA
WHERE MONTH(date_field) = MONTH(NOW());

【讨论】:

【参考方案2】:

计划

用数字交叉连接建立十进制数字 - 所有数字都可以表示为:

an10^n + ..a0*10^0

使用date_add在小于下个月开始的情况下添加月初数据过滤

设置

create table example
(
  `date` date primary key not null
);

drop view if exists digits_v;
create view digits_v
as
select 0 as n
union all
select 1 union all select 2 union all select 3 union all 
select 4 union all select 5 union all select 6 union all
select 7 union all select 8 union all select 9
;

查询

insert into example ( `date` )
select date_add(date('2015-11-01'), interval a2.n * 100 + a1.n * 10 + a0.n day)
from digits_v a2
cross join digits_v a1
cross join digits_v a0
where date_add(date('2015-11-01'), interval a2.n * 100 + a1.n * 10 + a0.n day)
<     date('2015-12-01')
;

sqlfiddle


选择前 10 名给予

select `date`
from example
order by `date`
limit 10
;

.

+----------------------------+
|            date            |
+----------------------------+
| November, 01 2015 00:00:00 |
| November, 02 2015 00:00:00 |
| November, 03 2015 00:00:00 |
| November, 04 2015 00:00:00 |
| November, 05 2015 00:00:00 |
| November, 06 2015 00:00:00 |
| November, 07 2015 00:00:00 |
| November, 08 2015 00:00:00 |
| November, 09 2015 00:00:00 |
| November, 10 2015 00:00:00 |
+----------------------------+

【讨论】:

以上是关于在mysql数据库中添加一整月的日期的主要内容,如果未能解决你的问题,请参考以下文章

仅在 MySQL 列中自动标记日期

在SQL数据库表中添加一列数值型(默认保留2位)的数字,该怎么写?

如何直接在sql server中添加一条数据

Codeigniter 如何在用户的注册日期中添加一年

如何在 Oracle 的日期中添加一天的最后一小时?

sql 表中添加一列并将这一列赋值?