Weaving Wong

总觉得该写点啥...

嗨,我是Weaving,一名机器学习爱好者.


分享读书、学习、生活感悟

Python(2)--Python与MySQL的时间格式通配符不一致

1.又拔了一个萝卜

由于今天工作上遇到需要将python中获取的当前时间存入MySQL数据库中,数据库的表示提前建好的,时间类型选择DATETIME(假设此处格式类型不可改变),python中有一个库为

from datetime import timedelta, datetime

所以理所应当的选择用这个方法获取时间

(datetime.today() + timedelta(-1)).strftime('%Y-%m-%d %H:%M:%S')

但是当我将获取的时间值写入数据库时,他的报错信息为

Not all str can be converted 

# 意思就是并不是所有的str都能直接转类型(这里说的额类型是DAETIME)

下面科普一下DTAETIME类型格式:

2018-10-29 17:03:06 

#具体不做讲解,大概长这样

经过查询,了解到MySQL支持一个叫做 str_to_date的内置函数,所以照着样子用用试试

INSERT INTO t_stats_sync_log VALUES(str_to_date('2018-10-29 17:03:06','%Y-%m-%d %H:%M:%S'))

结果,他疯狂报错,总说输入的格式有误。近乎崩溃。

最后我发现了一个小问题,MySQL的分钟的通配符竟然用的是

%i  # 这个是MySQL唯一使用作为分钟的通配符,即

INSERT INTO t_stats_sync_log VALUES(str_to_date('2018-10-29 17:03:06','%Y-%m-%d %H:%i:%S'))

至此,问题解决,数据写入正常。

附录常见MySQL通配符

1.mysql日期和字符相互转换方法 
date_format(date,’%Y-%m-%d’) ————–>oracle中的to_char(); 
str_to_date(date,’%Y-%m-%d’) ————–>oracle中的to_date();

%Y:代表4位的年份 
%y:代表2为的年份

%m:代表月, 格式为(01……12) 
%c:代表月, 格式为(1……12)

%d:代表月份中的天数,格式为(00……31) 
%e:代表月份中的天数, 格式为(0……31)

%H:代表小时,格式为(00……23) 
%k:代表 小时,格式为(0……23) 
%h: 代表小时,格式为(01……12) 
%I: 代表小时,格式为(01……12) 
%l :代表小时,格式为(1……12)

%i: 代表分钟, 格式为(00……59) 【只有这一个代表分钟,大写的I 不代表分钟代表小时】

%r:代表 时间,格式为12 小时(hh:mm:ss [AP]M) 
%T:代表 时间,格式为24 小时(hh:mm:ss)

%S:代表 秒,格式为(00……59) 
%s:代表 秒,格式为(00……59)

2.例子: 
select str_to_date(‘09/01/2009’,’%m/%d/%Y’)

select str_to_date(‘20140422154706’,’%Y%m%d%H%i%s’)

select str_to_date(‘2014-04-22 15:47:06’,’%Y-%m-%d %H:%i:%s’)
最近的文章

spark(1)- aggregate方法和fold方法总结

aggregate方法和fold方法总结最近在学习spark,理解这两个函数时候费了一些劲,现在记录一下。 rdd.fold(value)(func) 说到fold()函数,就不得不提一下reduce()函数,他俩的区别就在于一个初始值。 reduce()函数是这样写的:rdd.reduce(func)参数是一个函数,这个函数的对rdd中的所有数据进行某种操作,比如:val l = List(1,2,3,4)l.reduce((x, y) => x + y)对于这个x,它代指的是返...…

spark继续阅读
更早的文章

Python(1)--MySQL数据库中非法时间字段的处理方法

1.MySQL中常用时间数据类型范围大小由于不同的数据结构类型导致能够显示的范围不一样,如果在工作中使用范围较小的类型,当输入的时间范围不够规范时,容易导致程序抛出异常,中断进程的运行。下面给大家列出MySQL中常用的数据格式的范围:datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01...…

python继续阅读