Python 与sql server时间类型处理

PYTHON

参考:https://docs.python.org/zh-cn/3/library/datetime.html

pandas

python读入excel,时间列本身为字符串,使用pandas读入excel后,dataframe的时间列类型为 datetime64,值的类型为timestamp

datetime

datetime.date 日期
datetime.time 时间
datetime.datetime 日期时间结合
datetime.timedelta 两个 date 或者 time 的时间间隔。
获取当前日期和时间

import datetime as dt
dt.datetime.now()#.strftime('%Y-%m-%d')

在当前时间增加1小时:add_hour=datetime.datetime.now()+datetime.timedelta(hours=1)

(datetime.datetime.now()+datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S')
#'2021-07-22 15:20:15'

timedelta

import pandas as pd
#timedelta = date1 - date2
year = timedelta(days=365)
td =  pd.to_timedelta('1 days ')

days = (td / np.timedelta64(1, 'D')) 
days = td / np.timedelta64(60 * 24, 'm') 
#Timedelta对象只读,只读实例属性.days,.seconds和.microseconds
days =td.days
#返回时间间隔包含了多少秒
td.total_seconds()

Timestamp

Timestamp('2021-06-30 00:00:00')
#计算当前日期前两个月时间
test_max_time - relativedelta(months=+2)
test_max_time + relativedelta(months=-2)
#时间多三天
delta = datetime.timedelta(days=3)
dt= dt + delta

months可替换为years,days,weeks,minutes,seconds等

Timestamp('2021-04-30 00:00:00')

str、timestamp\datetime转换

字符串转datetime

string = '2021-07-11 11:59:58'
time1 = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')

datetime/timestamp转字符串:

time1_str = datetime.datetime.strftime(time1,'%Y-%m-%d %H:%M:%S')

时间戳转datetime

import time
import datetime
datetime.datetime.fromtimestamp(time.time())
#datetime.datetime(2024, 5, 9, 19, 40, 48)
datetime.date.fromtimestamp(time.time())
#datetime.date(2021, 7, 22)

time类型
<class ‘time.struct_time’>

import time
time1 = time.localtime()
#time.struct_time(tm_year=2021, tm_mon=7, tm_mday=22, tm_hour=14, tm_min=25, tm_sec=6, tm_wday=3, tm_yday=203, tm_isdst=0)

SQL SERVER

参考:https://blog.csdn.net/pengpegv5yaya/article/details/8024677

  • 当前系统日期、时间
select getdate()
  • dateadd在向指定日期加上一段时间的基础上,返回新的 datetime 值
    例如:向日期加上2天
select dateadd(day,2,'2004-10-15')      --返回:2004-10-17 00:00:00.000
  • datediff 返回跨两个指定日期的日期和时间边界数。
 select datediff(day,'2004-09-01','2004-09-18')       --返回:17

select datediff(day,'2004-09-18','2004-09-01')       --返回:-17
  • datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2004-10-15')      --返回 10
  • datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2004-10-15')      --返回:星期五
  • day(), month(),year() --可以与datepart对照一下
select 当前日期=convert(varchar(10),getdate(),120)

,当前时间=convert(varchar(8),getdate(),114)

select datename(dw,'2004-10-15')

select 本年第多少周=datename(week,'2004-10-15')

,今天是周几=datename(weekday,'2004-10-15')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值