【问题标题】:MySQL - How to convert date to the month has leading zeros?MySQL - 如何将日期转换为月份有前导零?
【发布时间】:2022-01-04 00:21:18
【问题描述】:

所以我试图在表格中插入日期,日期是这种格式:

8/3/2021

但是我想在月份和日期之前添加一个前导 0,以便日期显示 08/03/2021。另外我想将它添加为与另一个字符串连接的字符串,所以test123-08/03/2021

【问题讨论】:

  • 日期没有格式,只有格式为 strings 的日期 - 您应该在显示日期时这样做,而不是存储日期;据我们所知,可能是 8 月 3 日
  • @Stu I want to add a leading 0 before the month ...所以我们知道在这种情况下日期是 3 月 8 日。
  • 希望这只是为了演示目的,而不是单一的事实来源。
  • 以下stackoverflow帖子中提到的以下解决方案有助于从mysql中检索带有前导零的月份-另一个标准函数是to_char用于日期到字符串的转换-stackoverflow.com/questions/7043794/…-已经尝试过的和失败的地方,将有助于从优秀的开发者社区获得更好的解决方案和建议。

标签: mysql


【解决方案1】:

如果你真的以这种格式存储日期,那么你可以试试这个:

SELECT 
       DATE_FORMAT(STR_TO_DATE(date_col_string,'%d/%m/%Y'),'%d/%m/%Y') as 'zero-padded',
       CONCAT(string_val,'-',DATE_FORMAT(STR_TO_DATE(date_col_string,'%d/%m/%Y'),'%d/%m/%Y')) as 'concatenated'
FROM mytable;

使用STR_TO_DATE() 函数将date 值更改为YYYY-MM-DD 的标准MySQL 日期格式,然后使用DATE_FORMAT() 函数根据您想要的输出显示日期值。第二个操作是使用您选择的字符串在转换后的日期上添加CONCAT() 函数。我假设您的日期值是d/m/y,因为正如评论中提到的@Stu,由于您没有存储为MySQL 标准日期格式,这意味着8/3/2021 可以是d/m/ym/d/y。使用标准日期格式值,查询会更短:

SELECT 
       DATE_FORMAT(date_col,'%d/%m/%Y') as 'zero-padded',
       CONCAT(string_val,'-',DATE_FORMAT(date_col,'%d/%m/%Y')) as 'concatenated'
FROM mytable;

Demo fiddle

【讨论】:

    【解决方案2】:

    您应该将源日期插入适当的日期或日期时间列。然后,要以您想要的格式查看您的日期,请使用带有适当格式掩码的 DATE_FORMAT() 函数:

    SELECT DATE_FORMAT(date_col, '%d/%m/%Y') AS date_out
    FROM yourTable;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多