如何在MariaDB中生成日期范围?

时间:2019-10-15 03:35:49

标签: mysql mariadb

我想插入整个2019-01-01至2019-12-31的日期和星期几。但是我做不到。

我尝试使用date_format函数。

enter image description here

这是我的桌子。表格名称为food_user,我想在re_date,re_day 2019-01-01〜2019-12-31中插入日期和日期

enter image description here

INSERT INTO food_user (NAME,re_date,re_day) VALUES ('Alex' , ? , ?);

3 个答案:

答案 0 :(得分:1)

如果您使用的是MariaDB,请尝试以下代码以获取年份中的所有日期:

SELECT '2019-01-01' + INTERVAL seq DAY FROM seq_0_to_364;

or 

SELECT '2018-12-31' + INTERVAL seq DAY FROM seq_1_to_365;

要理解这一点,MariaDB具有一个内置的SEQUENCE Engine参考-https://mariadb.com/kb/en/library/sequence-storage-engine/

基本键入SELECT seq FROM seq_1_to_10;将使您从1到10的数字序列。在这种情况下,整年是365天,因此seq_1_to_365将返回从1到365的数字。如果您从零开始计数(0 ),那么您需要将最后一个值视为364,因此如上例所示,将序列更改为seq_0_to_364。从查询中,您可以执行以下操作:

INSERT INTO food_user (NAME,re_date,re_day)
SELECT 'Alex','2019-01-01' + INTERVAL seq DAY,DAYNAME('2019-01-01' + INTERVAL seq DAY) FROM seq_0_to_364;

答案 1 :(得分:0)

如果您使用MySQL, 您可以尝试 insert into food_user(name, re_date, re_day) values("Hello", "2019-01-01", dayofweek("2019-01-01"));

如果要插入从2019-01-01到2019-12-31的所有日期,则可以使用php或任何其他服务器端语言插入记录。

如果使用的是Oracle,则可以使用PL / SQL功能插入所有这些

答案 2 :(得分:0)

也许这可以帮助

insert into food_user (name,re_date,re_day) values ('Alex' , DATE_FORMAT(NOW(), "%Y-%m-%d") , DATE_FORMAT(NOW(), "%W"));

来自https://www.w3schools.com/sql/func_mysql_date_format.asp