MySQL错误的日期格式

时间:2018-09-27 07:09:28

标签: mysql date-formatting

嗨,我正在尝试在mysql中将dd-mm-yy转换为yy-mm-dd,但是我得到的日期错误如下:

 query :  select STR_TO_DATE('01-09-2018','%Y-%m-%d')
   result:  2001-09-20

请帮助我解决此问题。

4 个答案:

答案 0 :(得分:2)

尝试以下操作:格式字符串在您的情况下是错误的

select STR_TO_DATE('01-09-2018','%d-%m-%Y')

输出:

'2018-09-01'

答案 1 :(得分:1)

您需要以正确的方式使用STR_TO_DATE函数。它需要一个字符串str和一个格式字符串format。格式模式必须与您的输入str相匹配。在您的情况下,您输入了 dd-mm-yy ,因此您必须使用匹配格式,即%d-%m-%Y

请尝试以下操作:

select STR_TO_DATE('01-09-2018','%d-%m-%Y')

其他详细信息:

  • %d 作为数字值(01到31)的月份中的一天
  • %m 月名作为数字值(00到12)
  • %Y 年,为4位数字
  • 请注意,STR_TO_DATE函数将始终以MySQL标准日期格式返回,即yyyy-mm-dd(如果输入仅是日期)。
  • 如果要转换为其他格式,则需要结合使用STR_TO_DATEDATE_FORMAT函数。

答案 2 :(得分:1)

简单地说,您在混淆参数。在您的示例中,您提供了%Y-%m-%d,这是您的预期输出STR_TO_DATE的第二个参数应该是您提供的字符串的格式:

SELECT STR_TO_DATE('01-09-2018','%d-%m-%Y')

默认的MySQL日期字符串是:%Y-%m-%d,这是从上面的查询中得出的:

2018-09-01

请参见以下SQL提琴:https://www.db-fiddle.com/f/2411rcvjH6dKZYLzxkii39/0

答案 3 :(得分:0)

似乎您将解析参数写错了...应该指向字符串的参数

SELECT
    STR_TO_DATE('01-09-2018','%d-%m-%Y');