【问题标题】:MySQL date conversion(“01/Jan/2015” to “01012015”)MySQL 日期转换(“01/Jan/2015”到“01012015”)
【发布时间】:2015-03-18 06:56:11
【问题描述】:

我在 MySQL 日期 (varchar) 列中有日期格式:“01/Jan/2015”。我想把它转换成“01012015”格式。

这可能在 MySQL 日期格式中吗?

【问题讨论】:

标签: php mysql date


【解决方案1】:

是的,你需要使用str_to_date函数

select str_to_date("01/Jan/2015","%d/%b/%Y");

这会将您的 varchar 日期转换为实际日期,然后您需要将 date_format 函数应用为

select date_format(str_to_date("01/Jan/2015","%d/%b/%Y"),"%m%d%Y");


mysql> select date_format(str_to_date("01/Jan/2015","%d/%b/%Y"),"%m%d%Y") as date;
+----------+
| date     |
+----------+
| 01012015 |
+----------+
1 row in set (0.00 sec)

只需将上述查询中的硬编码日期替换为列名即可

select date_format(str_to_date(CDATE,"%d/%b/%Y"),"%m%d%Y");

【讨论】:

  • 感谢它仅在 2015 年 1 月 1 日正常工作。我想使用列名代替 01/Jan/2015。列名是 CDATE。你能帮帮我吗?
  • 更新了答案!!
  • 是的,所有日期都在显示,但不维持秩序。你能在这个链接中看到输出吗output
  • 只需在查询末尾添加order by (str_to_date(CDATE,"%d/%b/%Y"),"%m%d%Y")即可。
  • 它给了我010120150102201501032015 等等。我想首先显示一月的所有日期,如010120150201201503012015,然后是二月等等。
【解决方案2】:

您想将“01/Jan/2015”转换为“01012015”:

SELECT DATE_FORMAT(STR_TO_DATE('01/Jan/2015','%d/%b/%Y'), '%d%m%Y')

请注意,在 STR_TO_DATE 中,您使用 %b 表示 3 个字母的月份,但在 DATE_FORMAT 中,您使用 %m 表示两位数的月份。

【讨论】:

    【解决方案3】:

    MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。您应该使用您的应用程序层重新格式化为所需的格式。如果您使用的是 PHP,您可以使用 date() 函数来执行此操作

    【讨论】:

      【解决方案4】:

      这对你有帮助

      strtotime($date); 
      

      【讨论】:

      • 你能测试这个PHP 函数并在你的答案中显示代码和输出吗?
      • sry,实际上是它的时间函数
      猜你喜欢
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多