【问题标题】:Oracle sql not grabbing day for the current dateOracle sql没有抓住当前日期的日期
【发布时间】:2015-02-19 22:31:37
【问题描述】:

我正在尝试获取 asofdate 字段的星期几。我在使用 Oracle SQL 时收到一条错误消息:“在应有数字字符的地方发现了一个非数字字符。”该错误是针对此查询的:

select to_char(to_date(max(distinct(asofdate)), 'mm/dd/yyyy'), 'DY') from PS_Z_EXS251AE_EMP

以下查询返回 '1/6/2015'

select max(distinct(asofdate)) from PS_Z_EXS251AE_EMP

有谁知道我做错了什么?

【问题讨论】:

  • 您是否有机会将日期存储在CHARVARCHAR 列中?1/6/2015 不会使用掩码mm/dd/yyyy 转换为日期。附:使用MAX()时不需要DISTINCT
  • 我试过了,它按预期工作:sqlfiddle.com/#!4/49063/2/0 你在 asofdate 中有一些无效的内容
  • 存储为日期
  • 那你为什么要转换成日期?

标签: sql oracle


【解决方案1】:

如果asofdate 存储为日期/时间数据类型,那么为什么要将其转换为日期。还有,你为什么用max()

select to_char(asofdate, 'DY')

如果asofdate 存储为字符串,那么您可能应该修复数据。为什么要将日期存储为字符串。那是错误的类型。

如果您想要您的问题建议的最大日期的星期几,那么只需执行以下操作:

select to_char(max(asofdate), 'DY')

【讨论】:

    【解决方案2】:

    你可以这样做

    select distinct max(extract(day from asofdate)) from from PS_Z_EXS251AE_EMP;
    

    【讨论】:

    • 我需要星期几,而不是一天
    • 然后将模 7 + 1 添加到该查询
    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 2023-02-02
    • 1970-01-01
    • 2014-06-17
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多