Это больше похоже на SQL
вопрос; Следующая ссылка может быть полезна:
http://www.techonthenet.com/oracle/functions/to_date.php
Метод грубой силы заключается в использовании оператора case в вашем SQL; Эквивалент вашего фрагмента кода:
SELECT CASE WHEN field1 = 'Saturday' then 1
WHEN field1 = 'Sunday' then 2
WHEN field1 = 'Monday' then 3
...
END as dateval,
field1 as datedisplay
FROM table1
ORDER BY 1;
Функция SQL DECODE
также работает, но мне нравится CASE
, потому что ее легче читать и избежать опечаток или ошибок.
Если у вас есть дополнительная информация о ваших значениях даты, я предлагаю сохранить ваши значения даты без изменений в полях базы данных в качестве типа данных DATE. Если вам нужно выяснить день недели, используя приведенную выше ссылку, вы можете просто привести свое значение даты в виде строки символов, представляющей правильное соответствующее значение дня недели.
для проверки:
SELECT to_char(SYSDATE, 'DAY') as day_of_week
FROM dual;
дает:
WEDNESDAY
(or whatever day of the week is local to your system)
Имейте в виду, что все, что возвращается из функции to_char, чувствительно к регистру. Это должно работать во всех выпусках Oracle, включая Oracle-XE.