从完整日期中提取月份和年份的查询是什么。 我的数据是这样的:2008年1月29日 我尝试此查询:在oracle中从日期中提取月份和年份
select ID_NO, CHECKED_DATE, to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY') AS A
from Doctor_Checkup;
但它会给输出:1/1/2008
预计产量:1-2008
从完整日期中提取月份和年份的查询是什么。 我的数据是这样的:2008年1月29日 我尝试此查询:在oracle中从日期中提取月份和年份
select ID_NO, CHECKED_DATE, to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY') AS A
from Doctor_Checkup;
但它会给输出:1/1/2008
预计产量:1-2008
如果该字段已经是一个日期列,你可以简单的中科院它吨至格式你想:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'mm-yyyy'),'0') AS A from Doctor_Checkup;
如果它是一个文本列,您将需要转换为日期格式第一:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(TO_DATE(CHECKED_DATE,'dd/mm/yyyy'),'mm-yyyy'),'0') AS A from Doctor_Checkup;
为了得到1-2008
格式使用以下格式修剪前导零:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'MM-YYYY'),'0') AS A from Doctor_Checkup;
一个日期没有格式 - 它是stored internally to the database 7字节(代表年,月,日,小时,分钟和秒),直到你使用的任何用户界面(即SQL/Plus,SQL Developer,Java等)试图将它显示给你,用户,并将它转换成你会发现有意义的东西(通常是一个字符串),即日期格式。
有一点需要注意的是,日期总是有年,月,日,小时,分和秒的组件。这样做的:
to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY')
有效一样做:
TRUNC(Checked_Date, 'MM')
,并还会有一个日期,小时,分钟和秒组件,但将已被截断到一个月的第一天的午夜。用户界面可能只是将其偏好设置为不显示时间组件(但日期仍然有)。
你想要做的是将日期转换为一个格式化字符串:
select ID_NO,
CHECKED_DATE,
TRIM(LEADING '0' FROM TO_CHAR(CHECKED_DATE, 'MM-YYYY')) AS A
from Doctor_Checkup;
或
select ID_NO,
CHECKED_DATE,
EXTRACT(MONTH FROM CHECKED_DATE)
|| '-' || EXTRACT(YEAR FROM CHECKED_DATE) AS A
from Doctor_Checkup;
完全相同的解决方案为矿山,而是两个分钟更快,并有关日期和格式的很好的解释。做得好。 –
你想要一个字符串表示的格式月份和年份[M] M-YYYY 。但是,Oracle的TO_CHAR
只支持MM-YYYY,所以如果有的话,你必须去掉前导零。
两个解决方案:
trim(leading '0' from to_char(checked_date, 'mm-yyyy'))
或
extract(month from checked_date) || '-' || extract(year from checked_date) from dual
我想你想这个'TO_CHAR(CHECKED_DATE, 'MM-YYYY')作为了' –