【问题标题】:Redshift SQL, concatinate sting and yearRedshift SQL,连接字符串和年份
【发布时间】:2020-07-07 23:07:20
【问题描述】:

我有 2 个变量:月份和年份。 月份是一个字符串,看起来像:Mar、Apr、May、Jun 等... 年份是一个数字:2019、2020

我试图连接两者,但它显示了一个语法错误。

`month`||`-`||`year` as Month_Year

我想要得到的是 Month-YYYY 或 DD-MM-YYYY

current_date - Interval '1 Month'

但在 Redshift SQL 语言中 为了更清楚,我尝试生成第三列。关于当前日期:

【问题讨论】:

  • 你期望在 DD-MM-YYYY 中的 DD
  • 我看不出这和mysql有什么关系
  • 这是一个动态图表,在这种情况下是当前日期。所以今天是 2020 年 3 月 27 日,我希望对前 12 个月进行调整。含义 27-03-2020、27-02-2020、27-01-2020 等
  • @kris030 你的最后评论让事情变得不太清楚。请将示例数据和预期结果作为文本添加到问题中。
  • @P.Salmon 我添加了一张表格,希望现在更清楚

标签: mysql string date type-conversion


【解决方案1】:

MySQL 不使用|| 作为连接运算符。而是使用concat() 函数。并且字符串文字需要用单引号括起来,而不是反引号。

concat(`month`, '-', `year`)

【讨论】:

    【解决方案2】:

    在 mysql 中,您将使用 now() 作为今天的日期,取消日期并连接月份和年份,这不会导致 yyyy-mm-dd 形式的有效 mysql 日期。

    drop table if exists t;
    create table t
    (yr int,mth varchar(3));
    
    insert into t values
    (2019,'Nov'),
    (2019,'Dec'),
    (2020,'Jan'),
    (2020,'Feb'),
    (2020,'Mar');
    
    
    select concat(day(now()),'-',mth,'-',yr)
    from t;
    
    +-----------------------------------+
    | concat(day(now()),'-',mth,'-',yr) |
    +-----------------------------------+
    | 27-Nov-2019                       |
    | 27-Dec-2019                       |
    | 27-Jan-2020                       |
    | 27-Feb-2020                       |
    | 27-Mar-2020                       |
    +-----------------------------------+
    5 rows in set (0.001 sec)
    

    别忘了你需要为闰年编写代码..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2022-12-07
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多