|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Добрый вечер, объясните чайнику, почему в окне отладки ? month(#03/02/2016#) равно 3 - я ожидал 2-ку, а ? month(#01/02/2016#) равно 1, опять же должно вернуться 2-ка ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 08:52 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Александр Коротковопять же должноникто никому ничего не должен. <censored>-американцы сначала пишут месяц, потом число, потом год ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 09:09 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 10:31 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Спасибо за ответы .... запутался я в этих датах. В одних случаях дата берется из текстового поля, в других - как результат извлечения из базы данных и везде нужно преобразовывать в нужный формат ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 11:51 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
из текстового поля нужно преобразовывать с помощью CDate в дату из БД вообще не надо трогать, она уже в виде даты #03/02/2016# - это тоже уже дата - ее тоже преобразовывать не надо самый безопасный формат даты: yyyy-mm-dd - в нем не возникает путаницы с месяцем ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 11:56 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Хорошо, спрошу еще, раз формат американский, то почему не возникает ошибки: ? month(#13/01/2014#) - возвращает 1, а ведь должно вернуть "несуществующий" 13 месяц? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 12:37 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Если литерал допускает дуальное толкование - считается, что первым идёт месяц. Если однозначен - то как имеет смысл интерпретировать. А вот ... как думаешь, что даст date(#13/14/2014#) ? А потом проверь... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 14:23 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
AkinaЕсли литерал допускает дуальное толкование - считается, что первым идёт месяц. Если однозначен - то как имеет смысл интерпретировать. А вот ... как думаешь, что даст date(#13/14/2014#) ? А потом проверь... Это в политике можно толковать, как вздумается ... а тут должно быть все строго ... раз первым идет месяц, значит должна быть ошибка на первое число в дате, если оно больше 12. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 14:42 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Так или иначе, единственное применение такой записи - это константа - это используется нечасто и ты ее записываешь сам - всегда пиши месяц первым - неоднозначности не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 14:53 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Хорошо, получается, что в окне отладки я должен использовать дату как строку, тогда вопросов не возникает ? Month("03/02/2014") 2 Ладно, пойду повешусь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 15:06 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Александр Коротков? Month("03/02/2014")Вот в ЭТОМ случае как раз и возникает вопрос - результат будет зависеть от того, какой у вас формат даты в виндах, в интернациональных настройках. Как я уже говорил - вот так: ?month("2001-05-06") неоднозначности не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 15:10 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
но в такой формат ("2001-05-06") нужно будет каждый раз переводить параметр, прежде чем передавать его в некую пользовательскую функцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 15:20 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
У меня есть ощущение что вы путаете типы данных - строку и дату (String и Date) у Date НЕТ И НЕ МОЖЕТ НИКАКОГО ФОРМАТА - это просто число, если вы получаете откуда-то некий тип данных (например из базы из поля типа Date) и передаете его в функцию, который принимает параметр типа Date, вообще не требуется думать ни о каких преобразованиях - их нет. Формат возникает только в тот момент, когда вы превращаете дату в строку (например при выводе на экран) или наоборот, когда пользователь вводит дату с клавиатуры - вот только тогда есть необходимость задумываться о том, где расположен месяц. В типе Date понятия "положение месяца" просто НЕТ - это число, обозначающее количество дней, прошедших с 1900-01-01 (кажется). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 16:27 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.ProУ меня есть ощущение что вы путаете типы данных Пожалуй да, в голове пока каша ... хотя начинаю понимать вашу мысль .... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 17:59 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Если приведете примеры своего кода и что вы хотите куда передать - можно будет показать на конкретном примере ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 18:03 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Александр КоротковЭто в политике можно толковать, как вздумается ... а тут должно быть все строго ... раз первым идет месяц, значит должна быть ошибка на первое число в дате, если оно больше 12. Не понял... ко мне какие претензии? не я реализацию функции писАл... кстати, всё и есть строго - результат детерминированный? да... чего ещё надо? а если кто-то умом не охватил - его проблемы. Shocker.ProУ меня есть ощущение что вы путаете типы данных - строку и дату (String и Date) Есть ещё третья ипостась - литерал даты. Нечто из разряда полу-тут-полу-там, типа нет, а значение есть... весёлый такой зверёк. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 19:26 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
AkinaЕсть ещё третья ипостась - литерал даты. Нечто из разряда полу-тут-полу-там, типа нет, а значение есть... весёлый такой зверёк.чёй-то типа нет. Все тот же тип - Date ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2014, 22:12 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Shocker.ProАлександр Коротковопять же должноникто никому ничего не должен. <censored>-американцы сначала пишут месяц, потом число, потом год Не так давно так писали и на Руси, чтобы в этом убедиться, достаточно почитать письма <censored>-Гоголя. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 03:12 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
да, и мерили в пядях, саженях и верстах, пудах и фунтах Однако стандартизация взяла верх во всех странах... кроме некоторых ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 08:47 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Значит не во всех. Да и стандарт, оказывается, дело относительное. Там он один, а где-то там он другой. Так принято, и это хорошо, потому что это означает разнообразие и занятость. И первый день недели не везде понедельник, кстати, и Цельсий не везде рулит. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 09:20 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
i45И первый день недели не везде понедельник, кстати, и Цельсий не везде рулит.примерно в тех же странах, где мили, фунты и месяц пишется впереди )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 10:23 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Мне так кажется, это далеко не последние страны. По-крайней мере это те страны, без которых этот форум просто бы не существовал. Так что, чей стандарт стандартнее, еще надо посмотреть. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 11:17 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Я считаю, что тот стандарт стандартнее, где единицы того же смысла переводятся друг в друга путем умножения на степень 10, а не какое-то произвольное число, и даты записываются в порядке увеличения или уменьшения детализации (интересно, а почему у них время не показывается как ММ:ЧЧ:СС - логичнее для них было бы) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 11:36 |
|
Функция Month(Date) возвращает разные значения.
|
|||
---|---|---|---|
#18+
Спасибо всем, к Зеленограду претензий не имею :) Вообще, мне нужно написать некую функцию, типа Double, которая принимает три параметра: начальную дату DateStart; конечную дату DateEnd; номер месяца iMonth. Параметр iMonth должен попадать в диапазон номеров месяцев начальной и конечной дат. Т.е. iMonth >= Month(DateStart) And iMonth <= Month(DateEnd). В противном случае возвращаем 0 Функция возвращает "какую часть" занимает указанный диапазон дат по отношению к длительности номера переданного месяца, например: fnX("2014-01-12","2014-03-23",1)=0.64516 fnX("2014-01-12","2014-03-23",2)=1 fnX("2014-01-12","2014-03-23",3)=0.7666 Для чего это нужно? Есть ежемесячный плановый показатель "Сколько больных должно быть пролечено". План утверждается на год, число пролеченных каждый месяц немного меняется. Врач знает сколько он пролечил реально за некий период (между DateStart и DateEnd) он хочет знать - а сколько это в процентах от плана. Если бы диапазон дат начинался календарным началом и заканчивался календарным концом месяца - тут нет проблем. Я конечно изваял нечто, но страшно показывать .... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 11:41 |
|
|
start [/forum/topic.php?fid=60&msg=38606559&tid=2156418]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 191ms |
0 / 0 |