有的时候做数据清洗的时候 , 如果表中数据在某一天没有记录,但是业务要求不能有缺失日期,那么就需要我们将这些缺失日期补上。这个前提就是我们先要有一张包含所有日期的列表(作为左表),供我们进行匹配(left join)进而补上缺失日期。

Python代码:

import datetimedef Date_interval_list(date_start = None,date_end = None):if date_start is None:date_start = '2000-01-01'if date_end is None:date_end = datetime.datetime.now().strftime('%Y-%m-%d')date_start=datetime.datetime.strptime(date_start,'%Y-%m-%d')date_end=datetime.datetime.strptime(date_end,'%Y-%m-%d')date_list = []date_list.append(date_start.strftime('%Y-%m-%d'))while date_start < date_end:date_start+=datetime.timedelta(days=+1)# 日期加一天date_list.append(date_start.strftime('%Y-%m-%d'))# 日期存入列表print(date_list)if __name__ == '__main__':Date_interval_list("2018-12-25", "2019-01-07")

运行结果:

['2018-12-25', '2018-12-26', '2018-12-27', '2018-12-28',
'2018-12-29', '2018-12-30', '2018-12-31', '2019-01-01','2019-01-02', '2019-01-03', '2019-01-04', '2019-01-05','2019-01-06', '2019-01-07']

MySQL代码:

DELIMITER $$
DROP PROCEDURE IF EXISTS create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE, e_date DATE)
BEGINSET @createSql = 'CREATE TABLE IF NOT EXISTS calendar (`date` date NOT NULL,UNIQUE KEY `unique_date` (`date`) USING BTREE)ENGINE=InnoDB DEFAULT CHARSET=utf8'; prepare stmt from @createSql; execute stmt; WHILE s_date <= e_date DOINSERT IGNORE INTO calendar VALUES (DATE(s_date)) ;SET s_date = s_date + INTERVAL 1 DAY ;END WHILE ; END$$
DELIMITER ;CALL create_calendar ('2018-12-25', '2019-01-07');

运行结果:

MySQL的运行结果是直接生成一张表calendar,表中包含日期间隔里的所有日期date。

以前总觉得MySQL的作用很小,大概就是存储数据 + 简单清洗 + 数据统计 ,以后要刮目相看了,就像刮目相看 Excel 一样。

缺失值处理 - 获取一段时间内所有日期的列表 - (Python、MySQL)相关推荐

  1. java 周几_java根据日期获取周几和获取某段时间内周几的日期

    整理两个日期的方法. 根据日期获取当天是周几 /** * 根据日期获取当天是周几 * @param datetime 日期 * @return 周几 */ public static String d ...

  2. 原生js获取一段时间内每隔几分钟的时间数组

    姊妹篇 原生js获取一段时间内每隔几天的时间数组 情况: 项目中有这么一个需求,输入开始时间.结束时间.时间间隔,获取一段时间内每隔几分钟的时间数组 接下来我必须现在网上找找有没有类似的稍微改改就好了 ...

  3. oracle获取一段时间内所有的小时、天、月

    原文链接:http://blog.csdn.net/ld422586546/article/details/9626921/ 点击阅读原文 ------------------------------ ...

  4. Jquery获取一段时间内所有对应的日期,并获取日期对应的星期几。

    本文是将已知的一段时间(已知开始时间,结束时间),获取这一段时间内所有的日期,包含开始时间,结束时间,并对应星期几. 1,获取一段时间的字符串,返回的是字符串,调用时在后面加, /*** 获取日期段所 ...

  5. php获取一段时间内的法定工作日

    首先,需要自己在后台创建一个表 content_cooper 这个结构如下: CREATE TABLE `my_content_cooper` (`id` int(11) unsigned NOT N ...

  6. PHP获取一段时间内的每个周几, 每月几号, 遇到特殊日子就往后延

    2016年11月1日 16:18:19 星期二 主要用到的函数是 strtotime() strtotime('+1 Tuesday', $timestamp) 获取下周二, 从时间戳$timesta ...

  7. python从云端数据库获取数据失败_使用%s的Python MySQL Connector数据库查询失败

    使用%s的Python MySQL Connector数据库查询失败 我有一个基本程序,应该查询包含用户信息的数据库.我正在尝试为特定用户选择信息并将其打印到控制台. 这是我的代码:import my ...

  8. java 时间段内月份_java获取某段时间内的月份列表

    /**获取两个时间节点之间的月份列表**/ private static List getMonthBetween(String minDate, String maxDate){ ArrayList ...

  9. js获取一段时间内工作日的天数

    代码 function workday_count(start, end) {let count = 0;let current = start;while (current< end) {co ...

最新文章

  1. mysql字段中去掉括号
  2. python中json和字典相互转化
  3. 合肥将全力打造“城市超脑” 创建智慧城市典范
  4. Android如何在java代码中设置margin
  5. java 定时删除_Java编写定时删除文件程序
  6. linux java so 历险
  7. npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!
  8. 用软件测试管理效率,软件测试攻略(一):效率工具分享
  9. 8.Azure文件(文件共享)-NAS(中)
  10. WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
  11. springboot 配置文件乱码的问题
  12. tf入门-池化函数 tf.nn.max_pool 的介绍
  13. 【金万维】天联高级版的管理员帐号和密码忘记
  14. vs2010专业版下载链接
  15. typecho插件编写教程6 - 调用接口
  16. ubuntu下解决longene-qq 退出之后再登录出现登录失败的问题
  17. MRT工具谢幕,HEG华丽登场
  18. Python编程:Python2和Python3环境下re正则匹配中文
  19. 计算机excel表格公式教程,Excel2010
  20. android 高德地图动画,使用MotionLayout实现高德地图bottomSheets效果

热门文章

  1. jquery插件课程1 幻灯片、城市选择、日期时间选择、拖放、方向拖动插件
  2. 7.Reverse Integer (INT; Overflow)
  3. 简述C++程序编写的过程
  4. 做10多年测试的老何
  5. ​我敢说,这是最全的常用设计模式汇总
  6. C语言,函数不可返回指向栈内存的指针
  7. Android系统init进程启动及init.rc全解析
  8. STM32F103按键操作的另一种实现——状态机
  9. 51单片机——硬件基础
  10. 【Pytorch神经网络理论篇】 06 神经元+神经网络模型+全连接网络模型