作为替代TRIM()
或使用缩写形式与DY
格式元素,你也可以使用the FM
fill-mode format modifier来获得完整的日期名不填充:
V2:=TO_CHAR(V,'FMDAY');
IF V2='SUNDAY' THEN
...
当然,这并不搞乱你显示既然你那么使用相同的V2
值,所以你会看到:
FRIDAY19-SEP-14
SATURDAY20-SEP-14
TODAY IS SUNDAY
SUNDAY21-SEP-14
MONDAY22-SEP-14
TUESDAY23-SEP-14
WEDNESDAY24-SEP-14
两个DAY
和DY
由你ñ影响LS设置,所以如果谁运行这个恰好是在不同的语言环境,这可能无法按预期工作;例如,对于讲法语的国家/地区的某个人,将会看到DIMANCHE
,这不等于字符串字面值'SUNDAY'
。您可以通过指定的语言要使用去除可能的二义:
V2:=TO_CHAR(V,'FMDAY','NLS_DATE_LANGUAGE=ENGLISH');
这似乎有点小题大做,但如果你比较的结果,而不是仅仅显示它,这是一个更加安全。既然你要显示也可以通过执行TO_CHAR()
两次获得两个:
alter session set NLS_DATE_LANGUAGE=SPANISH;
DECLARE
V DATE :=TO_DATE (&H, 'DDMMYYYY');
V1 DATE:=V+6;
BEGIN
WHILE V<V1 LOOP
IF TO_CHAR(V,'FMDAY','NLS_DATE_LANGUAGE=ENGLISH')='SUNDAY' THEN
DBMS_OUTPUT.PUT_LINE('TODAY IS SUNDAY');
END IF;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(V,'DAY')||V);
V:=V+1;
END LOOP;
END;
/
VIERNES 19-SEP-14
SÁBADO 20-SEP-14
TODAY IS SUNDAY
DOMINGO 21-SEP-14
LUNES 22-SEP-14
MARTES 23-SEP-14
MIÉRCOLES24-SEP-14
的比较总是在固定的语言,但显示将在会话语言。
您也可以轻易地同时显示周日日期和为此在普通的SQL,除了“今天是星期天”的消息;或者使用更简单的PL/SQL循环。取决于你的实际使用情况。
但你为什么喊? – Mureinik 2014-09-20 08:31:10
雅仪式,对不起瓶盖被打开..再次抱歉 – user2686661 2014-09-20 08:36:48
所以你住在一个全大写的国家? – GolezTrol 2014-09-20 08:38:17