|
Последняя дата месяца
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=40&msg=39910986&tid=1560477]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
128ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 236ms |
0 / 0 |