mysql格式化日期(转帖)
昨天写了一些关于数据库的脚本,在数据写入与数据读取的时候,发生了很多数据偏差。
让我在对数据做差集的时候,脑子快炸了。
首先
通过pymsql将数据写入到数据库的时候,你写进去的无论是什么数据,主要数据能够符合MySQL字段的要求,都能够写入。
我没仔细看过pymysql的原码,但应该时里面做了一些简单的字符串优化,其中就包括左右空格的取出。
我写入的字符数据,当时同的re找出来的数据字符串,没留心两边空格,意味有空格也没事。写进去空格,读出来也时空格,但读出来的时候已经没有两端空格了。
所以最好在写入的时候,就取出两端多余的空格。
还有就时DATETIME,MySQL其实很久没用了,昨天提取DATATIME的时候,提出来的时候,竟然是一个datetime.datetime的对象。
当然你可以在Python中对datetime对象进行转换,但如果在SELECT的时候就装换成字符串出来不是更好。MySQL的时间字符串格式化的字符跟Python有区别。
下面转帖:https://www.cnblogs.com/dest/p/4205371.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | mysql格式化日期 mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间。 1. DATE_FORMAT() 函数用于以不同的格式显示日期 / 时间数据。 DATE_FORMAT(date, format ) format 参数的格式有 % a 缩写星期名 % b 缩写月名 % c 月,数值 % D 带有英文前缀的月中的天 % d 月的天,数值( 00 - 31 ) % e 月的天,数值( 0 - 31 ) % f 微秒 % H 小时 ( 00 - 23 ) % h 小时 ( 01 - 12 ) % I 小时 ( 01 - 12 ) % i 分钟,数值( 00 - 59 ) % j 年的天 ( 001 - 366 ) % k 小时 ( 0 - 23 ) % l 小时 ( 1 - 12 ) % M 月名 % m 月,数值( 00 - 12 ) % p AM 或 PM % r 时间, 12 - 小时(hh:mm:ss AM 或 PM) % S 秒( 00 - 59 ) % s 秒( 00 - 59 ) % T 时间, 24 - 小时 (hh:mm:ss) % U 周 ( 00 - 53 ) 星期日是一周的第一天 % u 周 ( 00 - 53 ) 星期一是一周的第一天 % V 周 ( 01 - 53 ) 星期日是一周的第一天,与 % X 使用 % v 周 ( 01 - 53 ) 星期一是一周的第一天,与 % x 使用 % W 星期名 % w 周的天 ( 0 = 星期日, 6 = 星期六) % X 年,其中的星期日是周的第一天, 4 位,与 % V 使用 % x 年,其中的星期一是周的第一天, 4 位,与 % v 使用 % Y 年, 4 位 % y 年, 2 位 例子: DATE_FORMAT(NOW(), '%b %d %Y %h:%i %p' ) DATE_FORMAT(NOW(), '%m-%d-%Y' ) DATE_FORMAT(NOW(), '%d %b %y' ) DATE_FORMAT(NOW(), '%d %b %Y %T:%f' ) 输出结果: Dec 29 2008 11 : 45 PM 12 - 29 - 2008 29 Dec 08 29 Dec 2008 16 : 25 : 46 2. MySQL 格式化函数 FROM_UNIXTIME() SELECT FROM_UNIXTIME(date, '%Y-%c-%d %h:%i:%s' ) as post_date , date_format(NOW(), '%Y-%c-%d %h:%i:%s' ) as post_date_gmt FROM `article` where outkey = 'Y' 1 、FROM_UNIXTIME( unix_timestamp ) 参数:一般为 10 位的时间戳,如: 1417363200 返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS' 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。 复制代码 mysql> select FROM_UNIXTIME( 1344887103 ); + - - - - - - - - - - - - - - - - - - - - - - - - - - - + | FROM_UNIXTIME( 1344887103 ) | + - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2012 - 08 - 14 03 : 45 : 03 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - + 1 row in set ( 0.00 sec) 复制代码 2 、FROM_UNIXTIME( unix_timestamp , format ) 参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样; 参数 format : 转换之后的时间字符串显示的格式; 返回值:按照指定的时间格式显示的字符串; 复制代码 mysql> select FROM_UNIXTIME( 1344887103 , '%Y-%M-%D %h:%i:%s' ); + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | FROM_UNIXTIME( 1344887103 , '%Y-%M-%D %h:%i:%s' ) | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2012 - August - 14th 03 : 45 : 03 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 1 row in set ( 0.00 sec) mysql> select FROM_UNIXTIME( 1344887103 , '%Y-%m-%D %h:%i:%s' ); + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | FROM_UNIXTIME( 1344887103 , '%Y-%m-%D %h:%i:%s' ) | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 2012 - 08 - 14th 03 : 45 : 03 | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 1 row in set ( 0.00 sec) 复制代码 |
MySQL真的很厉害。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步