我有一个名为DATEOFORDER
的列,其类型为NUMBER(38)
。
当我运行SELECT查询时,我得到年 - 月 - 日结果,例如:
20161230,20160531或20170330
我希望实现的目的是将显示的字符数限制为仅限年月。所以我会得到以下内容:
201612,201605或201703
我厌倦了使用像TO_CHAR或EXTRACT这样的功能但没有成功。
答案 0 :(得分:3)
您可以始终除以100
以删除最后2位数字。所以这样的事情可以起作用:
select to_char(trunc(dateoforder / 100))
from tbl
答案 1 :(得分:1)
Oracle安装程序:
CREATE TABLE your_table ( dateoforder ) AS
SELECT '20161230, 20160531 or 20170330' FROM DUAL UNION ALL
SELECT '20161230' FROM DUAL UNION ALL
SELECT '20160531' FROM DUAL UNION ALL
SELECT '20170330' FROM DUAL;
<强>查询强>:
SELECT REGEXP_REPLACE( dateoforder, '(\d{6})\d{2}', '\1' ) AS monthoforder
FROM your_table
<强>输出强>:
MONTHOFORDER
------------------------
201612, 201605 or 201703
201612
201605
201703
答案 2 :(得分:1)
select substr(to_char(dateoforder), 1, 6) from tbl
答案 3 :(得分:0)
您应该使用substr(string, a,b)
运算符从string
中选择一个子字符串,其值在a
和b
之间,作为算法建议。
要获取字符串,您应该在dateoforder上使用to_char。