日期格式和提取日期值

Posted

技术标签:

【中文标题】日期格式和提取日期值【英文标题】:date FORMAT AND EXTRACTING DATE VALUES 【发布时间】:2019-05-07 16:24:51 【问题描述】:

我已经尝试转换日期格式,所以我可以提取我想要的年份的值。请帮忙

我已经试过了。日期格式是时间戳。代码现在成功,日期格式为 dd-mon-rr 但是,我无法使用 EXTRACT 函数来获取我想要的年份的值。

MM.NEEDDATE

TO_CHAR((SELECT MM.NEEDDATE FROM DUAL ), 'DD-MON-RR') AS MATERIALNEEDDATE 

我尝试这样做是为了获得 2018 年的价值

(EXTRACT(YEAR FROM TO_DATE(MM.NEEDDATE, 'DD-MON-RR'))> 2018)

但我收到类似

的错误

ORA-01830: 日期格式图片在转换整个输入字符串之前结束 01830. 00000 - “日期格式图片在转换整个输入字符串之前结束” *原因: *行动:

日期格式转换成功实际格式为时间戳

TO_CHAR((SELECT MM.NEEDDATE FROM DUAL ), 'DD-MON-RR') AS MATERIALNEEDDATE

未能成功提取年份 >2018 的日期 试过了-

(EXTRACT(YEAR FROM TO_DATE(MM.NEEDDATE, 'DD-MON-RR'))> 2018)

错误 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 01830. 00000 - “日期格式图片在转换整个输入字符串之前结束” *原因: *行动:

需要日期列具有多年的日期值,我只想要年份 > 2018 的值。

我可以在不格式化日期的情况下这样做吗?如何?

【问题讨论】:

如果needdate 已经是日期或时间戳,为什么还要调用to_date()?只需从原始值中提取年份......日期和时间戳都没有任何内在格式,但您可能真的指的是“数据类型”;即便如此,也无需转换/投射。 【参考方案1】:

我认为您不需要to_date(),因为您在列上使用TO_CHAR()(从字符串转换为字符串通常不是函数的使用方式)。

你试过了吗?

EXTRACT(YEAR FROM MM.NEEDDATE) > 2018

或者更简单地说:

MM.NEEDDATE >= DATE '2019-01-01'

【讨论】:

是的,我刚刚尝试了 EXTRACT (YEAR FROM MRL.NEEDDATE)>2018),它正在工作。谢谢 我使用 CAST (MRL.NEEDDATE AS DATE) AS NEEDDATE 更改日期格式 @WonderWoman:DATE 列没有“格式”。将 DATE 转换为 DATE 不会改变任何内容。

以上是关于日期格式和提取日期值的主要内容,如果未能解决你的问题,请参考以下文章

提取身份证出生日期,分离日期时间的日期和时间

我们如何仅从 Oracle 中具有各种日期和字符串格式的列中提取日期?

SQL里怎么把日期截取为月份

SQL里怎么把日期截取为月份

Bigquery (Standard Sql) - 年月日期格式

通过匹配字符串中的日期格式使用Java提取日期