如何获得真实日期而不是实际日期

时间:2017-11-22 16:33:01

标签: mysql date parsing

我正在尝试实施此查询:

SELECT 
    str_to_date(concat(Right(Born,2),"/", Mid(Born,6,2),"/",Left(Born,4)),'%d/%m/%y') as Born_Date,

    str_to_date(concat(Right(FirstTime,2),"/", Mid(FirstTime,6,2),"/",Left(FirstTime,4)),'%d/%m/%y') as First_Date

    FROM ItalianAthletes
    where Born is not null and char_length(born)=10
          and FirstTime is not null

我在数据库中将此格式作为日期(示例):22-07-1877。

但是取代这个日期,我得到:2018-07-22

如何获得1877而不是2018年?

1 个答案:

答案 0 :(得分:3)

您使用的是%y,这是两位数的年份,您应该使用%Y

此外,没有理由使用LEFT(),RIGHT()和MID()完成所有工作。您可以在STR_TO_DATE()的格式字符串中使用短划线而不是斜杠。

mysql> set @born = '22-07-1877';

mysql> select str_to_date(@born, '%d-%m-%Y');
+--------------------------------+
| str_to_date(@born, '%d-%m-%Y') |
+--------------------------------+
| 1877-07-22                     |
+--------------------------------+

请考虑使用真实的DATE列,而不是使用VARCHAR作为日期。做日期算术,日期函数,排序,搜索等会更简单。

首选将其格式化为演示文稿图层中的dd-mm-YYYY。