2017-05-26 66 views
-3

我正在努力将我的查询从mysql迁移到oracle。在MySQL中我使用的查询Oracle date to_char组和

SELECT DATE_FORMAT(IDATEIN, '%M-%Y') as MY 
    FROM ATTENDANCE 
GROUP BY MY 
ORDER BY IDATEIN DESC 

这给我造成像

MYDATE 
DEC-2016 
NOV-2016 
OCT-2016 

我的表包含

IDATEIN 
2016-12-01 
2016-12-01 
2016-12-01 
2016-10-01 
2016-11-01 

在oracle中我试图用这个

得到的只有一个月
SELECT TO_CHAR(DATEIN, 'MON-YYYY') AS MY 
    FROM HRM_ATTENDANCE 
    GROUP BY TO_CHAR(DATEIN, 'MON-YYYY') 
    ORDER BY TO_CHAR(DATEIN, 'MON-YYYY') 

但它或环abphables,像

APR-2016 
APR-2017 
AUG-2016 
FEB-2016 
FEB-2017 

请帮

甲骨文结果

Oracle Result

的MySQL结果

Mysql Result

+0

什么是“abphables”? –

+0

你的mysql结果中的2017条目在哪里? – Jens

+0

向我们显示两个查询的结果都是相同的输入记录 – Jens

回答

2

使用TRUNC截断日期至月末开始和GROUP BY/ORDER BY该日期值,只是它隐蔽的字符串SELECT子句中:

SELECT TO_CHAR(TRUNC(DATEIN, 'MM'), 'MON-YYYY') AS MY 
FROM  HRM_ATTENDANCE 
GROUP BY TRUNC(DATEIN, 'MM') 
ORDER BY TRUNC(DATEIN, 'MM') 

然而,由于你的数据似乎只能是在第一个月的那么这可以被简化为:

SELECT TO_CHAR(DATEIN, 'MON-YYYY') AS MY 
FROM  HRM_ATTENDANCE 
GROUP BY DATEIN 
ORDER BY DATEIN 
+0

谢谢你,你救了我的一天 – Mani