首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL5.0和5.1之间更改了日期时间格式?

问在MySQL5.0和5.1之间更改了日期时间格式?
EN

Server Fault用户
提问于 2011-09-20 12:49:59
回答 2查看 7.9K关注 0票数 5

我已经将mysql从5.0升级到MySQL5.1。在追赶期间,对日期时间值不正确的查询复制失败:

代码语言:javascript
复制
110919 13:56:18 [ERROR] Slave SQL: Error 'Incorrect datetime value: '2010-03-14 02:35:34.0' for column 'creation_date' at row 1' on query.

我尝试重新插入查询,结果再次失败,然后将值固定为:

代码语言:javascript
复制
2010-03-14 02:35:34

并且接受了这个查询。

我如何设置mysql来批准这样的日期时间值,以防止将来的问题?

我猜它是在表描述中设置的,并在mysql_upgrade期间被重置。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-09-20 13:52:57

Mysql 5.1处理微秒的方式与MySQL5.0一样,但是不能将微秒存储到任何时态数据类型的列中。任何微秒部分都会按照Mysql:http://dev.mysql.com/doc/refman/5.1/en/datetime.html的方式被丢弃。但是,由于此操作出错,可以使用mysql中的sql模式设置启用无效日期。

代码语言:javascript
复制
sql-mode=allow_invalid_dates

在my.cnf或my.ini中(取决于您的操作系统)。

http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_允许_无效_日期

PS:令人惊讶的是,您在问题中提供的日期和时间实际上是DST中不存在的时间(2010年3月14日):

票数 6
EN

Server Fault用户

发布于 2011-09-20 19:31:59

您可能必须在datetime_format中设置my.cnf

以下是非常非常不寻常的事情。变量日期和日期时间存在于MySQL 5.x中:

代码语言:javascript
复制
mysql> select version();
+----------------------+
| version()            |
+----------------------+
| 5.0.81-community-log |
+----------------------+
1 row in set (0.00 sec)

mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name   | Value             |
+-----------------+-------------------+
| date_format     | %Y-%m-%d          |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)

如果在MySQL文档中查找它们,说明它们是未使用的。然而,令我惊讶的是,你可以在你的会议上设置它们。以下是如何:

代码语言:javascript
复制
mysql> set date_format = '%Y%m%d';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name   | Value             |
+-----------------+-------------------+
| date_format     | %Y%m%d            |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)

问:你能在全球范围内设置它吗??(本例为Windows中的MySQL 5.5.12 )

代码语言:javascript
复制
mysql> set global date_format = '%Y%m%d';
ERROR 1238 (HY000): Variable 'date_format' is a read only variable

至少你不能在命令行上。在my.cnf (my.ini)呢?

我把这个添加到我的电脑上的my.ini中

代码语言:javascript
复制
[mysqld]
date_format="%Y%m%d"

重新启动mysql并得到以下内容:

代码语言:javascript
复制
mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.12-log |
+------------+
1 row in set (0.00 sec)

mysql> show variables like 'date%format';
+-----------------+-------------------+
| Variable_name   | Value             |
+-----------------+-------------------+
| date_format     | %Y%m%d            |
| datetime_format | %Y-%m-%d %H:%i:%s |
+-----------------+-------------------+
2 rows in set (0.00 sec)

虽然它是正式无文件,您可以发挥您的自由裁量权的格式。

试试看!!

免责声明:如果您的日期数据被捕获或杀死,我将否认任何您的行动的知识。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/313400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档