|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Вычислить дату начала недели или дату окончания недели легко, т.к. число дней в неделе постоянно. Так же можно вычислить и дату начала месяца. Подскажите, а как вычислить дату окончания месяца, т.е. последний день месяца? Ведь дней в месяце может быть 28, 29, 30 или 31. Может в Firebird есть что-то типа DaysInMonth? Код: sql 1. 2. 3. 4. 5.
Firebird 3. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 21:56 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11а как вычислить дату окончания месяца, т.е. последний день месяца? Подсказываю: это за один день до начала следующего месяца. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:11 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11, Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:12 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
30-го января у тебя результат будет забавным. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:13 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, поторопился. После корректировки работает нормально Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:27 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
т.е. сперва мне надо добавить 32 дня к текущей дате, а потом получить месяц Код: sql 1.
потом так же получить год и всё склеить, чтобы получилось 1ое число следующего месяца. И только потом вычесть единицу с помощью datediff? Или я слишком замудрёно придумал? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 22:31 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 Так же можно вычислить и дату начала месяца. Это в блокнотик. 1-е число вычислить - это задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 23:14 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 т.е. сперва мне надо добавить 32 дня к текущей дате, а потом получить месяц Код: sql 1.
потом так же получить год и всё склеить, чтобы получилось 1ое число следующего месяца. И только потом вычесть единицу с помощью datediff? Или я слишком замудрёно придумал? DF=Extact(Day from D) +1 -- Первое число месяца DL=DF+31 - Extract(Day from (DF+31)) -- Последнее число месяца ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 07:15 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
m7mпотом вычесть единицу с помощью DateDiff Только не DateDiff, а DateAdd с минусом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 08:00 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
не понимаю я смысла всех этих манипуляций. 1. "первое" число следующего месяца - это 01 число текущего месяца+1. Зачем вообще вычислять первое число месяца путем прибавления или вычитания количества дней куда-то там? У любого месяца всегда есть первое число. 2. в исходном вопросе про "последний день месяца". Это первый день следующего месяца минус 1 день. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 12:56 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
kdv, я так понимаю весь сыр бор из-за запроса типа получить статистику по текущему месяцу. Отсюда задача получить дата начала и дату окончания месяца. Твоё решение предполагает разложение даты на составляющие составление нового литерала даты. Впрочем вполне себе нормальное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 13:47 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис> Отсюда задача получить дата начала и дату окончания месяца. Зачем их получать/вычислять? Они известны до "начала" запроса. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:00 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис, Where Data>='01.01.2020' and Data<'01.02.2020' ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:36 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, ну так сперва ж нужно узнать - какой сейчас год/месяц? а как в запросе это всё сделать и потом склеить? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 14:40 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11> а как в запросе это всё сделать и потом склеить? Дима же уже ответил как. DateAdd(Month, 1, Твой_START_DATE_OF_MONTH) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 15:26 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, кому известны? Допустим надо знать статистику посещений сайта за прошлый месяц. Причём именно в формулировке "прошлый", ну или даже "текущий". Из этих формулировок необходимо вычислить 1 число месяца и последнее/текущее. Это можно делать как на клиенте, так и на сервере, но необходимость выполнять какие-то вычисления от этого не пропадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 15:28 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
kdv не понимаю я смысла всех этих манипуляций. 1. "первое" число следующего месяца - это 01 число текущего месяца+1. Зачем вообще вычислять первое число месяца путем прибавления или вычитания количества дней куда-то там? Да, kdv прав, но при декабре 12+1=13 это уже не январь и год должен быть приращен при этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 16:00 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис> необходимость выполнять какие-то вычисления от этого не пропадает. Ну "это" трудно назвать вычислениями. Впрочем, виноват, я ещё не читал топик, когда отвечал, не знал, что всё так запущено. AltHasp> год должен быть приращен при этом. *facepalm* Откройте для себя функции работы с датами, наконец, они есть из коробки со времён 2.1. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 16:24 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
а это будет период "предыдущий месяц" Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 16:49 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
AFAIR, на почившем в бозе сайте Преносила была целая подборка таких "вычислений" - и текущий месяц, и предыдущий, и неделя, и високосный и т.д. Хотя щас уже не очень актуально, конечно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 16:53 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 Гаджимурадов Рустам, ну так сперва ж нужно узнать - какой сейчас год/месяц? а как в запросе это всё сделать и потом склеить? Не надо ничего в запросе ни, пардон, вычленять, ни склеивать. Не поленился запустить Эксперта, и, надо же, оказалось открыто именно оно. Следственно, я это сюда уже постил и не так давно. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89.
На целевой таблице, естественно, нужен индекс по целевой дате. Если сделать следующий шаг оптимизации запросов такого рода, то следует задуматься о том, что вставляется запись один раз, дата либо не меняется вовсе, либо, в случае общего бардака меняется количество раз, счётное на пальцах одной руки, а вселенского бардака - двух, а читается 100500 раз, следовательно, есть смысл ввести поле ссылки на период в календаре в структуру таблиц, используемых в запросах такого рода, заполнять/менять её на триггерах этой таблицы, заглядывая в календарь, и джойнить по ней по ней с календарём в запросах, накладывая условие по дате только на календарь и делая ведущей хучь эту таблицу, хучь календарь, как там быстрее получится с учётом остальных условий. Я не слишком длинную фразу, следуя устоявшимся в голове канонам любимого мною Фолкнера, залудил? Если да, то можно половину запятых поменять на точки и переваривать по частям. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 16:58 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
> Я не слишком длинную фразу, следуя устоявшимся в > голове канонам любимого мною Фолкнера, залудил? > Если да, то можно ... переваривать по частям. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:01 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамAFAIR, на почившем в бозе сайте Преносила была целая подборка таких "вычислений" - и текущий месяц, и предыдущий, и неделя, и високосный и т.д. те вычисления были актуальны до firebird 2.1. Сейчас уже есть встроенные функции для всяких там, хотя порой они и выглядят длиннее. З.Ы. В 4.0 вообще-то для начала и конца года, месяца, недели даже специальную функцию ввели 22053491 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:12 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис те вычисления были актуальны до firebird 2.1. Сейчас уже есть встроенные функции для всяких там, хотя порой они и выглядят длиннее. З.Ы. В 4.0 вообще-то для начала и конца года, месяца, недели даже специальную функцию ввели 22053491 Занудный ретроград ON Вот эта тенденция меня и смущает. Обилие условно полезных возможностей подталкивает людей к полуумственной активности по поиску кусков чьего-то кода, которые вроде бы можно попробовать применить для первого случайно забрёдшего в голову способа решения любой осмысленной задачи, вместо того, чтобы чутка раскинуть мозгами и самостоятельно найти эффективный, опирающийся на простые и вечные истины. Куда катится этот мир... Занудный ретроград OFF А может, так и надо? Может, в этом и есть великая сермяжная правда? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:22 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка Код: plsql 1.
а хотелось бы без джойнов, вдруг пользователь не будет использовать параметры поиска по дате, к тому же полей по дате может быть несколько ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:26 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка Вот эта тенденция меня и смущает. Обилие условно полезных возможностей подталкивает людей к полуумственной активности по поиску кусков чьего-то кода, предлагаю вернуться к ассэмблеру ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:33 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаА может, так и надо? Может, в этом и есть великая сермяжная правда? не думаю. Несмотря на то что функция DATEADD имеет немного громоздкий синтаксис она делает код понятным и читаемым. Если делать по старинке, то добавление к дате некой дроби надо ещё и пояснять комментариями, потому как через 3 года и не вспомнишь чего там хотел добавить. З.Ы. Сам по себе производственный календарь вещь полезная, но как по мне он должен применяться в куда более сложных случаях нежели начало и конец месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:38 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис З.Ы. Сам по себе производственный календарь вещь полезная, но как по мне он должен применяться в куда более сложных случаях нежели начало и конец месяца. О них, пользуясь календарём, можно просто забыть. Если говорить о вхождении даты в период. А если нужна информация точно на этот день и заранее не знаешь на какой, то извлечь эту дату оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:43 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 а хотелось бы без джойнов, вдруг пользователь не будет использовать параметры поиска по дате, к тому же полей по дате может быть несколько Ой, и не говори. От этих джойнов один гемор. Самая вредная вещь - справочник номенклатуры. Надо в каждую строку в документах вбивать названия. А то вдруг пользователь не будет использовать условие по номенклатуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 17:54 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Чтобы получить записи за месяц (текущий или прошлый, например) , то можно ж ещё так написать? текущий месяц Код: sql 1. 2. 3. 4.
предыдущий месяц Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 18:33 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 предыдущий месяц вот так правильно Код: sql 1.
иначе в первом варианте будет 0, а не 12, если вычислять в январе ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 19:55 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
найти данные за предыдущую неделю Код: sql 1.
за текущую неделю Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 20:07 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11, ты уверен, что тебе нужны записи за N-ый месяц\неделю, независимо от года ? Ты уверен, что тебя устроит полный перебор таблицы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 20:40 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
аа, этого я не учел... спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 20:48 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
В общем, это тоже неправильно если учесть, что сегодня 5 января, то Код: sql 1. 2.
выдает 12 января вместо 30 декабря. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2020, 21:28 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
дата начала недели Код: sql 1.
правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 08:48 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис> те вычисления были актуальны до firebird 2.1. Ага. Это я к тому, что данный топик бы не возник, даже если кто-то сам не может их соорудить - был готовый "сборник выражений". > З.Ы. В 4.0 ... ввели 22053491 Капец. А это в стандарте тоже есть (я не в курсе) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 09:59 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11, всё равно неправильно, если выпадает на воскресенье Код: sql 1.
в поле WEEKSTART3 будет следующий день, т.е. 27ое, а не начало недели 20ое. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 10:32 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11> всё равно неправильно, если выпадает на воскресенье Что именно неправильно и что ты пытаешься получить? P.S. Удивляюсь, как можно программировать методом тыка - не в смысле, что неправильно, а просто медленно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 10:46 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
вот так получилось норм, проверил на понедельниках и воскресеньях Код: sql 1.
теперь осталось получить дату конца недели, т.е. дату воскресенья ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 10:48 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам что ты пытаешься получить? дату начала недели и дату конца недели, т.е. дату понедельника и дату воскресенья просто в FB неделя начинается с воскресенья и с нуля, а не 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 10:49 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11> просто в FB неделя начинается с воскресенья и с нуля, а не 1. Это называется разница между международным и американским стандартом. https://web.archive.org/web/20120606190207/http://volny.cz/iprenosil/interbase/ip_ib_code_timestamp.htm Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 11:18 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, я знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 11:30 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
надеюсь, это окончательный вариант Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 11:35 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
А, так ты утилитарку пишешь. Не забудь выложить сюда (и остальные тоже, если ещё есть) окончательный вариант, когда полностью оттестируешь - может, кому-то пригодится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 11:52 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11 Код: sql 1.
Добавлю, что STRING16 и DATE2 - это просто домены varchar(16) и Date соответственно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 12:00 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Вдруг кому пригодится: Код: sql 1. 2. 3. 4.
1=Monday, 2=Tuesday, ... 7=Sunday. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 13:39 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Хоть бы копирайт поставил. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 13:54 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
так общими усилиями :) зачем там копирайт вот вторая функция для получения даты последнего дня недели или месяца Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 16:04 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
нашел ещё несколько, может кому пригодится, правда старый код (firebird date functions) http://www.intitec.com/varios/Firebird_FuncionesDeFechas.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 16:06 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
X11, чего уж мелочиться делай сразу PSQL-пакет DATE_UTILS и пихай в него 100500 процедур и функций для работы с датами ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 16:06 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
Симонов Денис, и не забыть пометить код "-- выкинуть нахрен при переходе на ФБ 4" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 16:44 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
kdv, Пусть сначала релиз, наконец, выкатят.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2020, 17:11 |
|
Последняя дата месяца
|
|||
---|---|---|---|
#18+
kdv Симонов Денис, и не забыть пометить код "-- выкинуть нахрен при переходе на ФБ 4" :-) года через два? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2020, 11:20 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560477]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 441ms |
0 / 0 |