不管是在Excel函数中,还是在SQL语句中,亦或是在Python代码中,获取指定日期和进行日期时间的计算都是我们在数据分析中需要频繁使用到的,村长今天就跟大家分享一下如何在Excel、SQL和Python中获取指定日期!
01
获取当前的日期
Excel函数
=TEXT(TODAY(),"YYYY-MM-DD")
在Excel函数中,TODAY函数用于获取当前日期,该函数没有参数,这里用TEXT函数将获取的日期转换成指定格式,返回结果:2020-09-05
SQL函数
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL
在Oracle SQL中,SYSDATE函数用于获取当前日期,该函数没有参数也没有括号,这里用TO_CHAR函数将获取的日期转换成指定格式,返回结果:2020-09-05
Python代码
import time
today = time.strftime("%Y-%m-%d",time.localtime())
print (today)
在Python中,time是Python的一个标准库,localtime()函数用于格式化时间戳为本地的时间,如果不输入参数则以当前时间为转换标准,这里用strftime函数将获取的日期转换成指定格式,返回结果:2020-09-05
02
返回指定月数后的日期
Excel函数
=TEXT(EDATE(TODAY(),3),"YYYY-MM-DD")
在Excel函数中,EDATE函数用于返回指定日期N个月后(负数表示之前)日期,结果为表示日期的序列数字,所以该函数一般需要用TEXT函数将日期格式化,返回结果:2020-12-05
SQL函数
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,3),'YYYY-MM-DD') FROM DUAL
在Oracle SQL中,ADD_MONTHS()函数用于返回指定日期N个月后(负数表示之前)的日期,TO_CHAR()函数用于将日期格式化,返回结果:2020-12-05
Python代码
import datetime
from dateutil.relativedelta import relativedelta
new_date = datetime.date.today() + relativedelta(months=3)
print(new_date)
在Python中,datetime.date.today()用于获取当前日期,relativedelta(months=3)表示在某个日期基础上再加3个月,也就是返回3个月后的日期,返回结果:2020-12-05
03
返回本月最后一天的日期
Excel函数
=TEXT(EOMONTH(TODAY(),0),"YYYY-MM-DD")
在Excel函数中,EOMONTH函数用于返回指定日期N个月后(负数表示之前)的月末最后一天的日期,第2参数为0表示返回当前月份最后一天的日期,结果为表示日期的序列数字,所以该函数一般需要用TEXT函数将日期格式化,返回结果:2020-09-30
SQL函数
SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYY-MM-DD') FROM DUAL
在Oracle SQL中,LAST_DAY()函数用于返回指定日期所属月份最后一天的日期,TO_CHAR()函数用于将日期格式化,返回结果:2020-09-30
Python代码
import time,calendardef 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))
04
返回本月第一天的日期
Excel函数
=TEXT(EOMONTH(TODAY(),-1)+1,"YYYY-MM-DD")
转换一下思路,上个月末最后一天的日期+1就是本月第一天的日期,掐面提到了EOMONTH函数用于返回指定日期N个月后(负数表示之前)的月末最后一天的日期。
SQL函数
SELECT TO_CHAR(TRUNC(SYSDATE,'month'),'YYYY-MM-DD') FROM DUAL
在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;
Python代码
import time,calendardef 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))
点滴生活,皆是知识,多学习,多思考,抗衰老,拒绝老年痴呆!
好了,今天的分享就先到这里吧,下面插播一则广告放松一下,感兴趣的朋友可以了解一下!