номер месяца в формате 99 | |
---|---|
ProbaSP Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
Всем привет!
получаю номер месяца(нужно символьное значение): ALLTRIM(STR(MONTH(DATE()))) результат - 6 (июнь на сегодняшний день). Нужно - 06. есть стандартные функции или нужно небольшую обработку делать(проверять количество символов и добавлять 0)? или я снова где-то что-то не дочитал... VFP 9.0 SP2 |
Re: номер месяца в формате 99 | |
---|---|
прошелмимо Сообщений: 784 Дата регистрации: 21.02.2012 |
? PADL('6',2,'0')
? PADL('12',2,'0') |
Re: номер месяца в формате 99 | |
---|---|
прошелмимо Сообщений: 784 Дата регистрации: 21.02.2012 |
ALLTRIM(STR(
по рукам ходил, хрясь … LTRIM(STR( |
Re: номер месяца в формате 99 | |
---|---|
ProbaSP Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
Спасибо!
|
Re: номер месяца в формате 99 | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
?TRANSFORM(6, "@L 99")
|
Re: номер месяца в формате 99 | |
---|---|
ProbaSP Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
Хм, пока не смог разобраться с PADL...
С TRANSFORM вроде получилось. ?TRANSFORM(MONTH(DATE()), "@L 99") результат - 06. И значение символьное. Спасибо! |
Re: номер месяца в формате 99 | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Есть еще древний-древний способ. На FPD многие использовали типа такого:
Потому что по идее TRANSFORM в FPD2 например по идее уже был. А с падлом выше имелось в виду видимо нечто такое:
Вообще же, выражение MONTH(DATE()) обычно как-то не принято вставлять в функции. Недостаток заметен особенно, когда выражение нужно будет использовать не один раз. Кроме каких-то случаев, лучше бывает создавать переменную, с нужной областью видимости естественно, присваивая ей нужное выражение. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 2 раз(а). Последнее : Crispy, 28.06.19 20:13 |
Re: номер месяца в формате 99 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
------------------ WBR, Igor |
Re: номер месяца в формате 99 | |
---|---|
katana Сообщений: 20 Дата регистрации: 17.01.2011 |
Добрый день.
Игорь, поправьте, пожалуйста, если в чем не прав. В первом фрагменте из трех предложенных Вами вариантов обработки .. Обязательно ли преобразование первого аргумента функции PADL() в строку? Т.е. вместо PADL(LTRIM(STR(m.ln1%12+1)), 2, "0") разве нельзя использовать просто PADL(m.ln1%12+1, 2, "0") тогда этот вариант становится самым шустрым. Или я туплю и здесь существуют какие-то нюансы? ? P.S. Не выпендриваюсь, просто сейчас мне нужно работать с таблицами достаточно большими по числу записей, и любой, казалось бы микроскопический выигрыш, пусть даже тысячные доли секунды, дают ощутимый выигрыш по времени в сумме. Вот и ищу Спасибо! |
Re: номер месяца в формате 99 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Неявная трансформация это неявная трансформация. Если есть гарантия что на вход будет поступать целое число (например это всегда строго результат MONTH(какая-то-дата)) то можно доверить преобразование и функции PADL.
А если нет, то
------------------ WBR, Igor |
Re: номер месяца в формате 99 | |
---|---|
katana Сообщений: 20 Дата регистрации: 17.01.2011 |
В Вашем ответе ни слова не убавить не прибавить.
Понял. Спасибо |
Re: номер месяца в формате 99 | |
---|---|
medstrах Автор Сообщений: 1810 Дата регистрации: 10.06.2019 |
Почему бы сразу не чекать ввод/преобразовывать данные к int в таблицах, а не на этапе вычисления? |
Re: номер месяца в формате 99 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не понял вопроса.
Речь про преобразование некоего "номера месяца" в строку заданного формата. Что есть этот номер месяц, и в каком он виде представлен - не указано. Если это поле таблицы с типом int, или если это переменная инициализируемая выражением целочисленного типа, или это собственно подставляемое внутрь вызова функции выражение имеющее целочисленный тип (в т.ч. выражение MONTH(дата)) - то нет проблем. В общем же случае, когда там может оказаться и вещественное число, ну надо понимать что неявная трансформация приведёт не совсем к тому результату который ожидается... Кстати, если речь идёт про преобразование переменной/выражения типа date/datetime, то стоит обратить внимание и на функцию DTOS - мало ли, может быть там на самом деле и год и даже день нужен в таком же дополненном нулями виде - и тогда проще из результата DTOS нужную часть взять, чем сначала выделять месяц, год, день, потом дополнять нулями а потом ещё и обратно склеивать ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 03.07.19 15:52 |
Re: номер месяца в формате 99 | |
---|---|
medstrах Автор Сообщений: 1810 Дата регистрации: 10.06.2019 |
Хранить данные в ожидаемом формате сильно дешевле использования универсальной функции. Данные могут появиться в системе либо в результате пользовательского ввода, либо при импорте. В обоих случаях можно контролировать формат этих данных. Если ожидается, что будет int, а вместо этого прилетает double, то можно конвертировать сразу, либо сругаться.
В общем, это вопрос архитектуры. |
© 2000-2024 Fox Club  |