返回顶部
首页 > 资讯 > 数据库 >怎么使用Pandas实现MySQL日期函数
  • 423
分享到

怎么使用Pandas实现MySQL日期函数

2023-07-05 04:07:36 423人浏览 安东尼
摘要

本文小编为大家详细介绍“怎么使用pandas实现MySQL日期函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Pandas实现Mysql日期函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、前言环

本文小编为大家详细介绍“怎么使用pandas实现MySQL日期函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Pandas实现Mysql日期函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    一、前言

    环境:
    windows11 64位
    python3.9
    mysql8
    pandas1.4.2

    二、语法对比

    数据表


    使用 python 构建该数据集的语法如下:

    import pandas as pdimport numpy as npdf1 = pd.DataFrame({ 'col1' : list(range(1,7))                    ,'col2' : ['AA','AA','AA','BB','AA','BB']#list('AABCA')                    ,'col3' : ['2022-01-01','2022-01-01','2022-01-02','2022-01-02','2022-01-03','2022-01-03']                    ,'col4' : ['2022-02-01','2022-01-21','2022-01-23','2022-01-12','2022-02-03','2022-01-05']                    ,'col5' : [1643673600,1642723200,1642896000,1641945600,1643846400,1641340800]                   })df1['col3'] = pd.to_datetime(df1.col3)df1['col4'] = pd.to_datetime(df1.col4)df1

    注:直接将代码放 jupyter 的 cell 跑即可。后文都直接使用df1调用对应的数据。

    使用 Mysql 构建该数据集的语法如下:

    with t1 as(  select  1 as col1, 'AA' as col2, '2022-01-01' as col3, '2022-02-01' as col4, 1643673600 as col5 uNIOn all  select  2 as col1, 'AA' as col2, '2022-01-01' as col3, '2022-01-21' as col4, 1642723200 as col5 union all  select  3 as col1, 'AA' as col2, '2022-01-02' as col3, '2022-01-23' as col4, 1642896000 as col5 union all  select  4 as col1, 'BB' as col2, '2022-01-02' as col3, '2022-01-12' as col4, 1641945600 as col5 union all  select  5 as col1, 'AA' as col2, '2022-01-03' as col3, '2022-02-03' as col4, 1643846400 as col5 union all  select  6 as col1, 'BB' as col2, '2022-01-03' as col3, '2022-01-05' as col4, 1641340800 as col5 )select * from t1;

    注:直接将代码放 MySQL 代码运行框跑即可。后文跑 SQL 代码时,默认带上数据集(代码的1~8行),仅展示查询语句,如第9行。

    对应关系如下:

    Python 数据集MySQL 数据集
    df1t1

    date_add()/date_sub()

    时间的加减,在 MySQL 中,使用的是date_add()/date_sub()来实现,二者可以替换使用,只要对相加/减的时间加上负号即可(详见后面例子)。
    而在 Pandas 中,可以通过Timedelta()DateOffset()实现,二者有差异,如果是针对月份和年度计算差值,只能使用后者;如果是计算日、时、分、秒,则二者通用。
    时间范围对应的语法参数见下表:

    时间范围date_add()/date_sub()pandas.Timedelta()pandas.DateOffset()
    year-years
    month-months
    daydaysdays
    hourhourshours
    minuteminutesminutes
    secondsecondsseconds

    1、增加1天

    MySQL 增加 1 天,可以使用date_add()+1 day或者用date_sub()-1 day
    Pandas 中,可以使用 DateFrame 时间列直接加上pd.Timedelta(days=1)或者pd.DateOffset(days=1)

    语言PythonMySQL
    代码【Python1】
    df1.col3 + pd.Timedelta(days=1)
    【Python2】
    df1.col3 + pd.DateOffset(days=1)
    【MySQL1】
    select date_add(t1.col3,interval 1 day) as col3_1 from t1;
    【MySQL2】
    select date_sub(t1.col3,interval -1 day) as col3_1 from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    2、减掉1天

    语言PythonMySQL
    代码【Python1】
    df1.col3 + pd.Timedelta(days=-1)
    【Python2】
    df1.col3 + pd.DateOffset(days=-1)
    【MySQL1】
    select date_add(t1.col3,interval -1 day) as col3_1 from t1;
    【MySQL2】
    select date_sub(t1.col3,interval 1 day) as col3_1 from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    datediff()

    计算时间的差值,在 MySQL 中,使用datediff(<被减数>,<减数>)(即<被减数>-<减数>)实现;而在 Pandas 中,操作相对简单,两个 Series 相减即可。但是相减之后的数据类型是timedelta64[ns],如果要用于比较大小,或需要转化为整数,将timedelta64[ns]的数值提取出来,提取数值可以使用其属性days并借助apply()实现,具体代码逻辑见以下例子。

    语言PythonMySQL
    代码(df1.col4-df1.col3).apply(lambda x:x.days)select datediff(col4,col3) as diff from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    date_fORMat()

    格式设置,在 MySQL 中,使用date_format(),在 Python 中,使用strftime(),二者都是将时间类型转化为字符串类型。标识符有一点差异,前者的分使用%i,秒使用%s,而后者分使用%M,秒使用%S
    具体格式参考下表:

    时间范围(示例)date_format()strftime()
    年,0000~9999%Y%Y
    月,01~12%m%m
    日,01~31%d%d
    时,00~24%H%H
    分,00~59%i%M
    秒,00~59%s%S

    格式化为:年份-月份
    MySQL 直接使用date_format(列,"<格式符号>")函数套用即可;而 Python 中,由于strftime('<格式符号>')是作用于时间类型,而df1.col3是 Series 类型,所以需要使用apply()来辅助处理每一个值(如下 Python 代码)。

    语言PythonMySQL
    代码df1.col3.apply(lambda x:x.strftime(&lsquo;%Y-%m&rsquo;))select date_format(t1.col3,&lsquo;%Y-%m&rsquo;) as col3_1 from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    year()/month()/day()/hour()/minute()/second()

    取时间的某一部分(如:年、月、日、时、分、秒),在 MySQL 中,直接使用对应的函数作用于字段即可。
    在 Python 中,时间类型的值也有对应的属性可以获取到对应的值,同样地,由于df1.col3是 Series 类型,所以需要使用apply()来辅助处理每一个值(如下 Python 代码)。

    语言PythonMySQL
    代码df_timepart = pd.concat([
    df1.col4.apply(lambda x:x.year)
    ,df1.col4.apply(lambda x:x.month)
    ,df1.col4.apply(lambda x:x.day)
    ,df1.col4.apply(lambda x:x.hour)
    ,df1.col4.apply(lambda x:x.minute)
    ,df1.col4.apply(lambda x:x.second)
    ],axis=1
    )
    df_timepart.columns=[&lsquo;year&rsquo;,&lsquo;month&rsquo;,&lsquo;day&rsquo;,&lsquo;hour&rsquo;,&lsquo;minute&rsquo;,&lsquo;second&rsquo;]
    df_timepart
    select year(col4),month(col4),day(col4),hour(col4),minute(col4),second(col4) from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    from_unixtime()/unix_timestamp()

    使用时间戳时,需要特别注意:pandas 采用的是 零时区的时间,MySQL 会默认当地时间,北京时间采用的是东八区,所以北京的时间会比零时区早8小时,也就是说,同一个时间戳,北京时间会比零时区时间多8小时,如:1577836800,转化为北京时间是【2020-01-01 08:00:00】,转化为零时区时间为【2020-01-01 00:00:00】。

    1、时间戳转时间
    时间戳转时间,在 MySQL 中,通过from_unixtime()函数直接作用于列即可,还可以指定时间格式,格式化字符参考date_format()中的表格。
    在 Pandas 中,通过to_datetime()实现,注意需要指定unit,它根据时间戳的精度设置,常见参数有:【D,s,ms】,分别对应日数、秒数、毫秒数(相对1970-01-01 00:00:00的间隔数)。
    注意:如果需要转化为东八区,只能通过手动添加 8 小时。

    语言PythonMySQL
    代码【Python 1 默认时区】
    pd.to_datetime(df1.col5, unit=&lsquo;s&rsquo;)
    【Python 2 东八时区】
    pd.to_datetime(df1.col5, unit=&lsquo;s&rsquo;)+pd.Timedelta(hours=8)
    select from_unixtime(col5) from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    2、时间转时间戳
    时间转时间戳,在 MySQL 中,通过unix_timestamp()函数直接作用于列即可。
    在 Pandas 中,通过apply()+timestamp()实现,如果需要转化为东八区,先对时间做一层tz_localize("Asia/Shanghai")处理,然后再转化即可,返回的是浮点数。
    注意:这里有一个小细节,由于返回的值默认是科学计数方式,而我需要查看完整数字串,而且没有小数值,我加了int()处理。如果使用的时间精确到毫秒,即存在小数,加int()处理会丢失精度,应用时需要结合自己的实际情况和需求做处理。

    语言PythonMySQL
    代码【Python 1 默认时区】
    df1.col4.apply(lambda x:int(x.timestamp()))
    【Python 2 东八时区】
    df1.col4.apply(lambda x:int(x.tz_localize(“Asia/Shanghai”).timestamp()))
    select unix_timestamp(col4) from t1;
    结果怎么使用Pandas实现MySQL日期函数怎么使用Pandas实现MySQL日期函数

    读到这里,这篇“怎么使用Pandas实现MySQL日期函数”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网数据库频道。

    您可能感兴趣的文档:

    --结束END--

    本文标题: 怎么使用Pandas实现MySQL日期函数

    本文链接: https://lsjlt.com/news/349690.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 怎么使用Pandas实现MySQL日期函数
      本文小编为大家详细介绍“怎么使用Pandas实现MySQL日期函数”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Pandas实现MySQL日期函数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、前言环...
      99+
      2023-07-05
    • 使用Pandas 实现MySQL日期函数的解决方法
      目录一、前言二、语法对比数据表datediff()date_format()year()/month()/day()/hour()/minute()/second()from_uni...
      99+
      2023-02-22
      Pandas日期函数 Pandas MySQL日期函数
    • mysql日期转换函数怎么使用
      MySQL日期转换函数的使用方法如下:1. DATE_FORMAT(date, format)该函数用于将日期转换为指定的格式。其中...
      99+
      2023-08-15
      mysql
    • MySQL学习之日期函数怎么使用
      本篇内容介绍了“MySQL学习之日期函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!获取 系统时...
      99+
      2024-04-02
    • JavaScript日期函数怎么使用
      这篇文章主要讲解了“JavaScript日期函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript日期函数怎么使用”吧!javascript时间函数javascrip...
      99+
      2023-06-26
    • informix日期函数怎么使用
      Informix日期函数可以用于处理日期和时间数据,以下是一些常用的日期函数及其用法:1. CURRENT: 返回当前日期和时间例如...
      99+
      2023-05-31
      informix日期函数 informix
    • MySQL 对日期使用 DATE_FORMAT()函数
      文章目录 DATE_FORMAT()函数显示今天是星期几只显示年月显示当前时间的分钟数和秒数 DATE_FORMAT()函数 前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:s...
      99+
      2023-08-17
      mysql 数据库 sql
    • MySQL日期加减函数怎么用?
      今天小编就为大家带来一篇介绍MySQL日期加减函数的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。1. addtime()  为日期加上指定秒数select addtime(now...
      99+
      2024-04-02
    • mysql日期函数的使用方法
      这篇文章主要讲解了“mysql日期函数的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql日期函数的使用方法”吧! ...
      99+
      2024-04-02
    • MySQL日期函数的使用示例
      这篇文章主要为大家展示了“MySQL日期函数的使用示例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL日期函数的使用示例”这篇文章吧。日期函数1、CURDATE()/CURRENT_DA...
      99+
      2023-06-03
    • MySQL如何实现日期加减函数
      小编这次要给大家分享的是MySQL如何实现日期加减函数,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。1. addtime()  为日期加上指定秒数select add...
      99+
      2024-04-02
    • 如何使用Pandas实现MySQL窗口函数
      今天小编给大家分享一下如何使用Pandas实现MySQL窗口函数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言环境:...
      99+
      2023-07-05
    • mysql日期函数的用法
      这篇文章主要讲解了“mysql日期函数的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql日期函数的用法”吧!啥也不说,先记录一条sqlselec...
      99+
      2024-04-02
    • 什么是Mysql日期函数
      下面一起来了解下什么是Mysql日期函数,相信大家看完肯定会受益匪浅,文字在精不在多,希望什么是Mysql日期函数这篇短内容是你想要的。今日时间【2016-12-21】获取昨天日期yyyy-mm-ddsel...
      99+
      2024-04-02
    • PHP日期时间函数date()怎么使用
      PHP日期时间函数date()用于格式化一个本地的日期和时间,并返回格式化后的字符串。使用date()函数的基本语法如下:```date(format, timestamp)```其中,`format`参数是必需的,指定日期时间的格式。...
      99+
      2023-08-09
      PHP date()
    • MySQL函数date_format()日期格式转换的实现
      一、在oracle中,当想把字符串为‘2011-09-20 08:30:45’的格式转化为日期格式,我们可以使用oracle提供的to_date函数。 sql语句为: SELECT to_...
      99+
      2022-08-12
      MySQLdate_format日期转换 MySQLdate_format转换
    • 怎么使用pandas apply()函数
      这篇文章主要讲解了“怎么使用pandas apply()函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用pandas apply()函数”吧!理解 pandas 的函数,要对函数式...
      99+
      2023-06-25
    • pandas函数isnull怎么使用
      今天小编给大家分享一下pandas函数isnull怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一.假设有数据集df...
      99+
      2023-07-02
    • 怎么在Python中使用pandas函数实现数据分析
      本篇文章给大家分享的是有关怎么在Python中使用pandas函数实现数据分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.r...
      99+
      2023-06-14
    • oracle中怎么使用trunc函数处理日期
      在Oracle中,可以使用TRUNC函数来处理日期。TRUNC函数用于截断日期,将日期的时间部分设为零,只保留日期部分。以下是使用T...
      99+
      2024-04-09
      oracle
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作