【问题标题】:DB2 SQL extract only month and year from date columnDB2 SQL 从日期列中只提取月份和年份
【发布时间】:2016-06-07 11:17:04
【问题描述】:

我试图从 MGMOV00F 表中月份和年份分组 - 日期列是 DTMOMM,尝试以下语法但仍然出现错误:函数年份的参数 1 无效,有人帮忙吗?

【问题讨论】:

  • DB@ 支持 YEAR()MONTH() 函数,所以这些应该可以工作。
  • 试试这个 DT01MM > #20160101#
  • 错误:列 #20160101# 不在指定表中
  • 是的应该可以,但我没有使用正确的语法尝试过 YEAR (yy, yyyy),同样的错误
  • 您确定DTMOMM 属于DATE 数据类型吗? DT01MM 不是。

标签: sql database date db2


【解决方案1】:

您确定要处理实际的日期数据类型吗?

鉴于WHERE DT01MM > '20160101'

在我看来,您正在处理字符列;因为 AFAIK DB2 不会像 '2016-01-01' 那样隐式地将 '20160101' 转换为日期。

既然如此,你的任务就很简单了。只需子串前 6 个字符..

【讨论】:

  • 好的,请忘记 DT01MM,因为我不再需要它(它的创建日期)我只需要 - 并按日期(年、月)DTOMM 分组。 DOTMM 中的记录写为 20,160,101 (01 01 2016)
  • 如果DOTMM 真的是20,160,101,那么它也不是日期数据类型。那是一个数值。您将无法使用YEAR()MONTH()。但是SUBSTRING(DIGITS(DOTMM),1,6) 会给你你想要的。
  • 如果我使用 select: CDARMM, CDMGMM, CAMOMM, QTMOMM, SUBSTRING(DIGITS(DOTMM),1,6) 错误:1 不是有效的令牌对不起,但不是真正的 SQL 专业人士,只知道基本的任务
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 2018-02-16
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多