2014-01-10 2 views
2

Это был непосредственный проект, выполненный в сентябре 2013 года, без проблем. Oracle был back-end. Я не очень люблю оракула или любого дБ. проблема в том, что была логика, которую мы должны были реализовать с помощью SQL. то есть найти длину месяца в дате. Он работал, и я не уверен, может быть, я ошибался или вводил в заблуждение, длина выглядела странно. после некоторого исследования с пробными ошибками n, нашел, что длина всегда была одинаковой? я делаю что-то неправильно, пожалуйста? вот мой очень простой вызов функции SQL.Длина месяца неверна. Oracle Sql

LENGTH(TO_CHAR(proj_created_date,'MONTH')) 

Он постоянно возвращался 9

Я попытался LENGTHB() функцию после некоторых исследований, это был все тот же? Я считаю, что он добавляет некоторые пробелы, и, конечно, TRIM() исправил это. но зачем мне обрезать? Должен ли я преобразовать дату в строку? пожалуйста, помогите мне!

также попытался как Oracle 10g и 11g JDBC URL-адреса ....

спасибо.

+0

это просто .. это как максимальная длина месяца возвращаются .. и это сентябрьский .. использование формат модель .. (FM) –

ответ

2

Пожалуйста, попробуйте ниже.

LENGTH(TO_CHAR(proj_created_date,'FMMONTH')) 

Дальнейшие разъяснения Here!

Это не только месяц, но и название недели и даже номер дня, ноль будет добавлен к номеру дня. Скажите «01», а не «1». Используйте модели формата в соответствии с вашими требованиями. Он применяется до Oracle 12c.

+0

спасибо, я попытался сейчас, и вы правильно. –

0

As documentation saysMONTH в to_char() возвращает название месяца, заполненное до 9 символов.

Использовать fm префикс как suggested. Смотрите пример:

SELECT 
    TO_CHAR(to_date('2014-05-01', 'yyyy-mm-dd'), 'month yyyy') MONTH, 
    TO_CHAR(to_date('2014-05-01', 'yyyy-mm-dd'), 'fmmonth yyyy') fmmonth 
FROM 
    dual; 
Смежные вопросы