sql查询指定日期_一寸光阴一寸金!如何在Excel、SQL和Python中获取指定日期?

b55cf32c41b2d69a3694921fd228c44d.png

不管是在Excel函数中,还是在SQL语句中,亦或是在Python代码中,获取指定日期和进行日期时间的计算都是我们在数据分析中需要频繁使用到的,村长今天就跟大家分享一下如何在Excel、SQL和Python中获取指定日期!

01

获取当前的日期

bf5fceab1220cc321f66a76d22414e5e.png 7b3aec177caa67bc0102531fbe8c9d90.png 54c0d13ea12509ddb141ca60e5a1643c.png

Excel函数

=TEXT(TODAY(),"YYYY-MM-DD")

95f7d31ab4e1ca075589601642eee5e7.png

在Excel函数中,TODAY函数用于获取当前日期,该函数没有参数,这里用TEXT函数将获取的日期转换成指定格式,返回结果:2020-09-05

52155da867c6281d85788e2248455447.png 52bfc0c8a27cd42b86f6dff644c783ac.png

SQL函数

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL

de2708c26eaedda2d77fd528a8487a27.png

在Oracle SQL中,SYSDATE函数用于获取当前日期,该函数没有参数也没有括号,这里用TO_CHAR函数将获取的日期转换成指定格式,返回结果:2020-09-05

c7a189d82ee8de2084d30cd7c95c521b.png 3595619dbf995f18755cd08c1a400a00.png 26fd0a1bf03017830786051e3bc7422c.png

Python代码

14047621dda4bb516549d128435d43c1.png

import time
today = time.strftime("%Y-%m-%d",time.localtime())
print (today)

ab6ec6d09b533b8bb61af95beb0a4b42.png

在Python中,time是Python的一个标准库,localtime()函数用于格式化时间戳为本地的时间,如果不输入参数则以当前时间为转换标准,这里用strftime函数将获取的日期转换成指定格式,返回结果:2020-09-05

02

返回指定月数后的日期

bf5fceab1220cc321f66a76d22414e5e.png 7b3aec177caa67bc0102531fbe8c9d90.png 54c0d13ea12509ddb141ca60e5a1643c.png

Excel函数

=TEXT(EDATE(TODAY(),3),"YYYY-MM-DD")

95f7d31ab4e1ca075589601642eee5e7.png

在Excel函数中,EDATE函数用于返回指定日期N个月后(负数表示之前)日期,结果为表示日期的序列数字,所以该函数一般需要用TEXT函数将日期格式化,返回结果:2020-12-05

52155da867c6281d85788e2248455447.png 52bfc0c8a27cd42b86f6dff644c783ac.png

SQL函数

SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'YYYY-MM-DD') FROM DUAL

de2708c26eaedda2d77fd528a8487a27.png

在Oracle SQL中,ADD_MONTHS()函数用于返回指定日期N个月后(负数表示之前)的日期,TO_CHAR()函数用于将日期格式化,返回结果:2020-12-05

c7a189d82ee8de2084d30cd7c95c521b.png 3595619dbf995f18755cd08c1a400a00.png 26fd0a1bf03017830786051e3bc7422c.png

Python代码

14047621dda4bb516549d128435d43c1.png

import datetime

from dateutil.relativedelta import relativedelta

new_date = datetime.date.today() + relativedelta(months=3)

print(new_date)

ab6ec6d09b533b8bb61af95beb0a4b42.png

在Python中,datetime.date.today()用于获取当前日期,relativedelta(months=3)表示在某个日期基础上再加3个月,也就是返回3个月后的日期,返回结果:2020-12-05

03

返回本月最后一天的日期

bf5fceab1220cc321f66a76d22414e5e.png 7b3aec177caa67bc0102531fbe8c9d90.png 54c0d13ea12509ddb141ca60e5a1643c.png

Excel函数

=TEXT(EOMONTH(TODAY(),0),"YYYY-MM-DD")

95f7d31ab4e1ca075589601642eee5e7.png

在Excel函数中,EOMONTH函数用于返回指定日期N个月后(负数表示之前)的月末最后一天的日期,第2参数为0表示返回当前月份最后一天的日期,结果为表示日期的序列数字,所以该函数一般需要用TEXT函数将日期格式化,返回结果:2020-09-30

52155da867c6281d85788e2248455447.png 52bfc0c8a27cd42b86f6dff644c783ac.png

SQL函数

SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYY-MM-DD') FROM DUAL

de2708c26eaedda2d77fd528a8487a27.png

在Oracle SQL中,LAST_DAY()函数用于返回指定日期所属月份最后一天的日期,TO_CHAR()函数用于将日期格式化,返回结果:2020-09-30

c7a189d82ee8de2084d30cd7c95c521b.png 3595619dbf995f18755cd08c1a400a00.png 26fd0a1bf03017830786051e3bc7422c.png

Python代码

14047621dda4bb516549d128435d43c1.png import time,calendar
def get_end_date(date):
   if date.count('-') != 2:
       raise ValueError('- is error')
   year, month = str(date).split('-')[0], str(date).split('-')[1]
   end = calendar.monthrange(int(year), int(month))[1]
   end_date = '%s-%s-%s' % (year, month, end)
   return end_date
today = time.strftime("%Y-%m-%d",time.localtime())
print(get_end_date(today)) ab6ec6d09b533b8bb61af95beb0a4b42.png

04

返回本月第一天的日期

bf5fceab1220cc321f66a76d22414e5e.png 7b3aec177caa67bc0102531fbe8c9d90.png 54c0d13ea12509ddb141ca60e5a1643c.png

Excel函数

=TEXT(EOMONTH(TODAY(),-1)+1,"YYYY-MM-DD")

95f7d31ab4e1ca075589601642eee5e7.png

转换一下思路,上个月末最后一天的日期+1就是本月第一天的日期,掐面提到了EOMONTH函数用于返回指定日期N个月后(负数表示之前)的月末最后一天的日期。

52155da867c6281d85788e2248455447.png 52bfc0c8a27cd42b86f6dff644c783ac.png

SQL函数

SELECT TO_CHAR(TRUNC(SYSDATE,'month'),'YYYY-MM-DD') FROM DUAL

de2708c26eaedda2d77fd528a8487a27.png

在Oracle SQL中,trunc函数用于返回某个指定期间的第一天的日期,语法如下:

trunc(d1[,c1])

【功能】:返回日期d1所在期间(参数c1)的第一天日期

【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期)

【参数表】:c1对应的参数表:

最近0点日期: 取消参数c1或j

最近的星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六)

最近月初日期:month或mon或mm或rm

最近季日期:q

最近年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度)  

最近世纪初日期:cc或scc

【示例】

select sysdate 当时日期,

trunc(sysdate) 今天日期,

trunc(sysdate,'day') 本周星期日,

trunc(sysdate,'month') 本月初,

trunc(sysdate,'q') 本季初日期, 

trunc(sysdate,'year') 本年初日期 from dual;

993d0e3a8a2eb6778e1a38b5ba0181b8.png

c7a189d82ee8de2084d30cd7c95c521b.png 3595619dbf995f18755cd08c1a400a00.png 26fd0a1bf03017830786051e3bc7422c.png

Python代码

14047621dda4bb516549d128435d43c1.png import time,calendar
def get_start_date(date):
   if date.count('-') != 2:
       raise ValueError('- is error')
   year, month = str(date).split('-')[0], str(date).split('-')[1]
   start_date = '%s-%s-01' % (year, month)
   return start_date
today = time.strftime("%Y-%m-%d",time.localtime())
print(get_start_date(today)) ab6ec6d09b533b8bb61af95beb0a4b42.png

点滴生活,皆是知识,多学习,多思考,抗衰老,拒绝老年痴呆!

好了,今天的分享就先到这里吧,下面插播一则广告放松一下,感兴趣的朋友可以了解一下!

8a43b4c57a5c33f1c0cc8c49933a98a5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值