我正在尝试制作试算平衡报告
我有一个名为'PERIOD_NAME'的字段,用于存储会计期间名称
我的问题是:是否可以将“PERIOD_NAME”(“VARCHAR2”)转换为“DATE” 为了对ASC进行分类,给我这个结果
jan- 16
jan- 17
Feb- 16
Feb- 17
答案 0 :(得分:2)
假设TO_DATE( string, format_model, nls_settings )
与PERIOD_NAME
类似,请使用jan-17
(但您的问题不清楚具体格式是什么):
SELECT TO_DATE( period_name, 'MON-YY', 'NLS_DATE_LANGUAGE=English' )
FROM your_table;
如果您想按月按年排序,那么您可以使用EXTRACT
获取月份或年份并对其进行排序:
SELECT *
FROM (
SELECT TO_DATE( period_name, 'MON-YY', 'NLS_DATE_LANGUAGE=English' ) AS period_date
FROM your_table
)
ORDER BY EXTRACT( MONTH FROM period_date ),
EXTRACT( YEAR FROM period_date );
答案 1 :(得分:1)
我认为这就是你追求的目标?基本上,我已经使用to_date将句点名称转换为日期,然后分别提取月份和年份以用于排序。希望这有帮助!
数据
CREATE TABLE my_table
(
col1 VARCHAR2(10)
) ;
INSERT INTO my_table VALUES ('jan- 16');
INSERT INTO my_table VALUES ('jan- 17');
INSERT INTO my_table VALUES ('Feb- 16');
INSERT INTO my_table VALUES ('Feb- 17');
<强>解决方案强>
SELECT t.*
FROM my_table t
ORDER BY to_char(to_date(col1, 'mon- yy'), 'mm'),
to_char(to_date(col1, 'mon- yy'), 'yy')
结果
COL1
jan-16
jan-17
2月16日
2月17日