要用to_date语句
例如
SELECT to_date('18-JUN-99','dd-mm-yy') FROM dual其中:
TO_DATE(dateStr, 'DD-MM-YY')
是按照指定格式,将字符串dateStr转换为DATE类型的值
不过,得到的日期是
2099/06/18
哈哈
于是,你就得设定一个分界点,例如取80为界,
即:假定'18-JUN-80'被认为是1980年,'18-JUN-79'被认为是2079年
那么,语句这样写:
SELECT
CASE
WHEN ( TO_NUMBER( SUBSTR('18-JUN-99', 8, 2)) > 79)
THEN ADD_MONTHS( TO_DATE('18-JUN-99','dd-mm-yy'), -1200)
ELSE TO_DATE('18-JUN-99','dd-mm-yy')
END
FROM DUAL;
其中:ADD_MONTHS(dateVal -1200)是在时间值dateVal上减去100年得到的就是正确的时间
1999/06/18
例如
SELECT to_date('18-JUN-99','dd-mm-yy') FROM dual其中:
TO_DATE(dateStr, 'DD-MM-YY')
是按照指定格式,将字符串dateStr转换为DATE类型的值
不过,得到的日期是
2099/06/18
哈哈
于是,你就得设定一个分界点,例如取80为界,
即:假定'18-JUN-80'被认为是1980年,'18-JUN-79'被认为是2079年
那么,语句这样写:
SELECT
CASE
WHEN ( TO_NUMBER( SUBSTR('18-JUN-99', 8, 2)) > 79)
THEN ADD_MONTHS( TO_DATE('18-JUN-99','dd-mm-yy'), -1200)
ELSE TO_DATE('18-JUN-99','dd-mm-yy')
END
FROM DUAL;
其中:ADD_MONTHS(dateVal -1200)是在时间值dateVal上减去100年得到的就是正确的时间
1999/06/18
要符合yyyy-mm-dd hh:mi:ss规则
其中yyyy是四位数字的年,mm是两位数字的月份(01-12)dd 两位数字的天(01-31)
你的格式字符串不对啊
------------------------------
2004-ABR-20