【问题标题】:SQL query to convert Date to another format将日期转换为另一种格式的 SQL 查询
【发布时间】:2023-03-31 16:19:02
【问题描述】:

感谢您的帮助。我无法确定日期列中“值”的类型/格式。我猜它是朱利安日期格式。

列是paid_month,值如下。

                  200901
                  200902

所以,请帮助编写 SQL 查询以将日期列中的上述值(主要是 Julian 格式)转换为正常日期(MM/DD/YYYY)。

谢谢 罗希特

嗨,

很抱歉没有提供完整的信息。

1) 它是一个 Oracle 数据库。 2)给定的列是Paid_Month,值为200901,200902

3)我也很困惑,上面的值给出了月份和年份。如果我的猜测是正确的,则没有给出日期。

4)如果它不是 Julian 格式,那么也请帮助我获得至少 mm/yyyy 的 SQL


我正在使用 Oracle 数据库并运行查询 谢谢我得到了答案。

**现在,我必须执行相反的操作,将日期 01/09/2010 转换为具有 6 位数字的字符串。 请帮助语法 - 选择 to_char(01/01/2010,**

【问题讨论】:

  • 您使用的是什么数据库?转换为日期的功能因供应商而异。
  • 应该说你正在使用哪种风格的 SQL....
  • 我猜paid_month 实际上是一个 (var)char 列,而不是一个 date(time) 列...
  • 或者 number(6) 或者 int4 什么的?年=付月/100,月=付月 % 100,日=01?日子从哪里来?我同意,我们需要 DB 供应商,因为转换取决于供应商。我们需要知道paid_month 的格式。字符串、数字还是其他?

标签: sql oracle date-conversion


【解决方案1】:

它看起来像 YYYYMM - 根据您的数据库变体,尝试STR_TO_DATE(paid_month, 'YYYYMM'),然后对其进行格式化。

注意:MM/DD/YYYY 不是“正常”格式 - 只有美国人使用它。世界其他地区使用 DD/MM/YYYY

【讨论】:

  • 我正在使用 Oracle DB 并运行查询 selectpaid_month = STR_TO_DATE('200901','%Y%m') from dual;
【解决方案2】:

对于 MySQL 检查 http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

例子:

SELECT DATE_FORMAT(NOW(), '%d/%m/%Y')

【讨论】:

    【解决方案3】:

    对于 MySQL,您将使用 STR_TO_DATE 函数,请参阅http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_str-to-date

    SELECT STR_TO_DATE(paid_month,'%Y%m');
    

    听起来该列包含一些正常日期和一些 YYYYMM 日期。如果目标是更新整个列,您可以尝试隔离 YYYYMM 日期并仅更新这些日期。比如:

    UPDATE YourTable
    SET paid_month = DATE_FORMAT(STR_TO_DATE(paid_month, '%Y%m'), '%m/%d/%Y')
    WHERE LENGTH(paid_month) = 6
    

    【讨论】:

      【解决方案4】:
      SELECT (paid_month % 100) + "/01/" + (paid_month/100) AS paid_day
      FROM tbl;
      

      我不确定 oracle 如何连接字符串。通常,您会看到 ||在 SQL 中:

      SELECT foo || bar FROM ...
      

      或功能:

      SELECT cat (foo, bar) FROM ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-27
        相关资源
        最近更新 更多