|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
Добрый день! Внезапно перестали работать подобные вычисления SQL Server: Код: sql 1. 2.
Знаю что можно делать так: Код: sql 1. 2.
или выполнять подобную операцию с DATETIME, но почему пропала возможность работать таким образом с DATE? В чем может быть причина? Версия сервера: Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 09:29 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig Добрый день! Внезапно перестали работать подобные вычисления SQL Server: Код: sql 1. 2.
Знаю что можно делать так: Код: sql 1. 2.
или выполнять подобную операцию с DATETIME, но почему пропала возможность работать таким образом с DATE? В чем может быть причина? Версия сервера: Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor) так решил мелкософт ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 09:57 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig, а +1 к типу данных date вообще работал когда-нибудь? к datetime - запросто ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 10:02 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
andy st, select @date + 1 это выражение, основанное на предположении типа переменной и особенностей поведения интерпретатора. Необходимо всегда использовать dateadd(). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 10:20 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
andy st ol_chig, а +1 к типу данных date вообще работал когда-нибудь? к datetime - запросто Никогда к date нельзя было добавлять целые. Только к Datetime. Да и то deprecated со времени MS SQL 2000. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 10:31 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
Перестал работать и очень хорошо. Синтаксический сахар, приводящий к нестабильности кода, есть зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 11:02 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
andy st ol_chig, а +1 к типу данных date вообще работал когда-нибудь? к datetime - запросто Я, например, не знал, что оно и к datetime то работает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 13:11 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
uaggster andy st ol_chig, а +1 к типу данных date вообще работал когда-нибудь? к datetime - запросто Я, например, не знал, что оно и к datetime то работает :-) А я задолбался вычищать эту "арифметику" из старых ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 13:20 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
Первое же, что надо сделать - вычистить код от подобных конструкций и запретить их применять внутренними распоряжениями. Вообще всё, что depricated или "будет удалено в будущих версиях". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 13:25 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
andy st ol_chig, а +1 к типу данных date вообще работал когда-нибудь? Вот именно что работал!) И почему все считают что это "мусорный код", если к datetime это применимо? прибавление числа к datetime приводит увеличение этой даты на N дней, почему нельзя так же считать date, если программа понимает целое число как целый день, а не часы\минуты\секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:28 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig И почему все считают что это "мусорный код" Как вам уже сказали, потому что это depricated поведение. Использование depricated фич чревато "внезапно" проявляющимися ошибками при переходе на следующую версию SQL Server-а ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:34 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig Вот именно что работал! Не врите. Лечите дежавю. Date появился в MS SQL 2008 и никогда не допускалось date +1. ol_chig И почему все считают что это "мусорный код", если к datetime это применимо? прибавление числа к datetime приводит увеличение этой даты на N дней, почему нельзя так же считать date, если программа понимает целое число как целый день, а не часы\минуты\секунды. Патаму, что разработчики языков мечутся из крайности в крайность. То "синтаксический сахар" добавляют до угрозы диабета, то заменители "сахара" внедряют. Deprecated эта фича уже давно. И не уберут ее, покуда жив datetime. Что касаемо "православно ли это, али подлежит анафеме" - на C# поглядите, уже сахарница не выдерживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 14:45 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
aleks222, возможно у меня и правда глюки, раз столько человек говорят об одном и том же... Тогда ладно, буду считать что этот date+1 появился в коде сам по себе, заменив прошлый datetime+1. И начались ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:27 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig И почему все считают что это "мусорный код", если к datetime это применимо? прибавление числа к datetime приводит увеличение этой даты на N дней, почему нельзя так же считать date, если программа понимает целое число как целый день, а не часы\минуты\секунды. Все очень просто: datetime это синоним float, т.е. числа с плавающей точкой, где целая часть — это количество дней, прошедших от базовой даты. Прибавление 1 приводит к получению следующей даты. Но прибавить месяц вот так просто уже не получится. Date занимает 3 байта, а целое число - 4 байта. Выражение date+1 предполагает, что date преобразуется к целому числу, к этому числу прибавляется 1 и полученный результат преобразуется к date. Как на самом деле происходит обработка этих 3 байт для получения следующей даты нам не рассказывают. Поэтому приведение типа данных date к типу данных integer запрещено. И правильно делают. Есть интерфейс, функции работы с датами, и его нужно использовать, так как реализация может измениться в очередной версии продукта. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 15:32 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
ol_chig буду считать что этот date+1 появился в коде сам по себе, заменив прошлый datetime+1. Вы же проект храните в базе сорсов с версионностью? Посмотрите, что там было, с этим кодом и моделью данных, кто чего когда менял. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 20:18 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
Спасибо за разъяснения! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 06:41 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
datetime2 тоже не работает с +1. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2021, 09:24 |
|
Почему DATE + 1 перестал работать
|
|||
---|---|---|---|
#18+
L_argo datetime2 тоже не работает с +1. :( Гадать и удивляться тому, что можно и что нельзя делать с типами данных, как и перебирать варианты не нужно. Все "украдено" до нас: https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/data-type-conversion-database-engine?view=sql-server-ver15 Согласно концепции типов данных каждая переменная относится к одному и только одному типу данных. Тип данных определяет a) область допустимых значений переменных этого типа и b) набор операций, которые можно применять к переменным этого типа. К сожалению, в разделе о типах ( https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver15 ) пункт b не упоминается. Но по ссылкам можно добраться и до операций. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 15:40 |
|
|
start [/forum/topic.php?fid=46&msg=40073413&tid=1684654]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 137ms |
0 / 0 |