Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 удаление данных за вчерашний день  [new]
mr_max
Member

Откуда:
Сообщений: 1310
Помогите составить запрос для удаления данных из таблицы за вчераний день.
__________________________________________________________________
THE TRUTH IS OUT THERE
17 апр 18, 15:32    [21345756]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
mr_max
Помогите составить запрос для удаления данных из таблицы за вчераний день.
__________________________________________________________________
THE TRUTH IS OUT THERE


DELETE FROM TABLE WHERE [дата] = 'вчерашний день'
--OR
DELETE FROM TABLE WHERE [дата] = getdate()-1
17 апр 18, 15:34    [21345768]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
TaPaK
mr_max
Помогите составить запрос для удаления данных из таблицы за вчераний день.
__________________________________________________________________
THE TRUTH IS OUT THERE


DELETE FROM TABLE WHERE [дата] = 'вчерашний день'
--OR
DELETE FROM TABLE WHERE [дата] = getdate()-1


хреноватенько
17 апр 18, 15:39    [21345789]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
mr_max
Member

Откуда:
Сообщений: 1310
TaPaK
mr_max
Помогите составить запрос для удаления данных из таблицы за вчераний день.
__________________________________________________________________
THE TRUTH IS OUT THERE


DELETE FROM TABLE WHERE [дата] = 'вчерашний день'
--OR
DELETE FROM TABLE WHERE [дата] = getdate()-1

Как просто, спасибо.
17 апр 18, 15:41    [21345796]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
mr_max
TaPaK
пропущено...


DELETE FROM TABLE WHERE [дата] = 'вчерашний день'
--OR
DELETE FROM TABLE WHERE [дата] = getdate()-1

Как просто, спасибо.



угадайте, почему незашто?
17 апр 18, 15:43    [21345803]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ролг Хупин
mr_max
пропущено...

Как просто, спасибо.



угадайте, почему незашто?

неси свет в нашу тьму
17 апр 18, 15:53    [21345846]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4155
TaPaK
Ролг Хупин
пропущено...



угадайте, почему незашто?

неси свет в нашу тьму


добавлю тьмы ;-)
17 апр 18, 16:22    [21345981]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
mr_max
Как просто, спасибо.
так, на всякий случай...
а эта ваша "дата" (которая может быть вчерашней) она какого типа?
17 апр 18, 16:34    [21346056]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
mr_max
Member

Откуда:
Сообщений: 1310
Дедушка
mr_max
Как просто, спасибо.
так, на всякий случай...
а эта ваша "дата" (которая может быть вчерашней) она какого типа?

datetime2(3)
17 апр 18, 16:37    [21346069]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
iap
Member

Откуда: Москва
Сообщений: 47101
mr_max
Дедушка
пропущено...
так, на всякий случай...
а эта ваша "дата" (которая может быть вчерашней) она какого типа?

datetime2(3)
Тогда вам впаривают!
17 апр 18, 16:57    [21346144]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
ну может там только даты у него лежат без времени, тогда пойдёт =)
17 апр 18, 17:00    [21346154]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
iap
mr_max
пропущено...

datetime2(3)
Тогда вам впаривают!

естественно, какое ТЗ такой и ответ :)
17 апр 18, 17:00    [21346156]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
mr_max
datetime2(3)
в этих датах время присутствует?
17 апр 18, 17:08    [21346178]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
iap
Member

Откуда: Москва
Сообщений: 47101
Дедушка
mr_max
datetime2(3)
в этих датах время присутствует?
Как же, отсутствует! В данном случае точность - одна тысячная секунды!
17 апр 18, 17:19    [21346208]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
00:00:00.000
17 апр 18, 17:20    [21346211]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
iap
Как же, отсутствует!
тут я вас не догнал... поясните?
17 апр 18, 17:25    [21346234]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
iap
Member

Откуда: Москва
Сообщений: 47101
iap
Дедушка
пропущено...
в этих датах время присутствует?
Как же, отсутствует! В данном случае точность - одна тысячная секунды!
Чего-то я туманно написал... В общем, есть время.
В скобках - точность в долях секунды, по умолчанию - 7 знаков после десятичной точки.
17 апр 18, 17:27    [21346241]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
iap
iap
пропущено...
Как же, отсутствует! В данном случае точность - одна тысячная секунды!
Чего-то я туманно написал... В общем, есть время.
В скобках - точность в долях секунды, по умолчанию - 7 знаков после десятичной точки.


и что? его могут и не задавать , время это ваше в миллисекундах
17 апр 18, 17:28    [21346246]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
iap,

ну, тип я вижу,
другое дело, что у ТСа все записи "за вчера" могут иметь в этом поле значение 2018-04-16 00:00:00.000
мой вопрос был про это :)
17 апр 18, 17:29    [21346252]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
iap
Member

Откуда: Москва
Сообщений: 47101
Konst_One
iap
пропущено...
Чего-то я туманно написал... В общем, есть время.
В скобках - точность в долях секунды, по умолчанию - 7 знаков после десятичной точки.


и что? его могут и не задавать , время это ваше в миллисекундах
Гуманитарий?

P.S. Время там в часах/минутах/секундах/долях секунды. При чём здесь миллисекунды?
P.P.S. Можете писать ваш код в предположении, что дата всегда равна 1 января 1900 года.
Ведь другие даты могут и не задавать?
17 апр 18, 18:17    [21346366]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
04cf9f9576a6f15
Member [заблокирован]

Откуда:
Сообщений: 2927
DELETE FROM [table] WHERE CAST([Дата] AS DATE) = DATEADD(DAY, -1, CAST(GETDATE() AS DATE))
Но, это nonSARG.

#Хэщ=
17 апр 18, 19:23    [21346547]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31910
04cf9f9576a6f15
DELETE FROM [table] WHERE CAST([Дата] AS DATE) = DATEADD(DAY, -1, CAST(GETDATE() AS DATE))

Но, это nonSARG.

#Хэщ=
Почему же nonSARG, разве оптимизатор не преобразует это в вид [Дата] BETWEEEN ... AND ... ?

Но конечно лучше сразу написать правильно
WHERE [Дата] >= DATEADD(DAY, -1, CAST(GETDATE() AS DATE)) AND [Дата] < CAST(GETDATE() AS DATE)
17 апр 18, 19:28    [21346562]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
mr_max
Помогите составить запрос для удаления данных из таблицы за вчераний день.
__________________________________________________________________
THE TRUTH IS OUT THERE



Таки да. Предполагаем сразу 2 вещи.
1. У Вас есть кластерный индекс по int ключу с кодом даты.
2. У Вас на сервере время не меняется шаловливыми руками сисадминов и не прилетает периодически с некошерных NTP серверов.

Итак.
declare @date datetime, @did int

set @date = convert(date,getdate())
set @did = convert(int,convert(varchar(8),@date,112)) -- это просто волшебство

-- не будем нагружать журнал транзакций, пусть удаляем таки совсем чуть-чуть
delete top (100000) from [dbo].[table] where [did]=@did
-- но при этом удаляет в цикле, который завершится при наступлении
-- того самого нужного момента, который утвержден распоряжением
-- партии и правительства и постановлением кнессета
WHILE @@ROWCOUNT > 0 
	begin
	delete top (100000) from [dbo].[table] where [did]=@did
	end
	
17 апр 18, 19:35    [21346583]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
mr_max,

Конечно, за вчерашний день будет немного иначе.
declare @date datetime, @did int

set @date = convert(date,getdate())
set @date = dateadd(dd,-1,@date) -- теперь тут вчерашний день
set @did = convert(int,convert(varchar(8),@date,112)) -- это просто волшебство

-- не будем нагружать журнал транзакций, пусть удаляем таки совсем чуть-чуть
delete top (100000) from [dbo].[table] where [did]=@did
-- но при этом удаляет в цикле, который завершится при наступлении
-- того самого нужного момента, который утвержден распоряжением
-- партии и правительства и постановлением кнессета
WHILE @@ROWCOUNT > 0 
	begin
	delete top (100000) from [dbo].[table] where [did]=@did
	end
17 апр 18, 20:08    [21346653]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
как всегда call центр индусов на высоте
для удобства запишем, что земля плоская
автор
Таки да. Предполагаем сразу 2 вещи.
1. У Вас есть кластерный индекс по int ключу с кодом даты.
2. У Вас на сервере время не меняется шаловливыми руками сисадминов и не прилетает периодически с некошерных NTP серверов.


автор
datetime2(3)
18 апр 18, 09:21    [21347503]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
iap
Konst_One
пропущено...


и что? его могут и не задавать , время это ваше в миллисекундах
Гуманитарий?

P.S. Время там в часах/минутах/секундах/долях секунды. При чём здесь миллисекунды?
P.P.S. Можете писать ваш код в предположении, что дата всегда равна 1 января 1900 года.
Ведь другие даты могут и не задавать?


http://cyclowiki.org/wiki/Миллисекунда
18 апр 18, 11:55    [21348169]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
iap
пропущено...
Гуманитарий?

P.S. Время там в часах/минутах/секундах/долях секунды. При чём здесь миллисекунды?
P.P.S. Можете писать ваш код в предположении, что дата всегда равна 1 января 1900 года.
Ведь другие даты могут и не задавать?


http://cyclowiki.org/wiki/Миллисекунда


читаем и думаем
автор
n* is a zero- to seven-digit number from 0 to 9999999 that represents the fractional seconds. In Informatica, the fractional seconds will be truncated when n > 3.
18 апр 18, 11:59    [21348195]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
TaPaK
как всегда call центр индусов на высоте
для удобства запишем, что земля плоская
автор
Таки да. Предполагаем сразу 2 вещи.
1. У Вас есть кластерный индекс по int ключу с кодом даты.
2. У Вас на сервере время не меняется шаловливыми руками сисадминов и не прилетает периодически с некошерных NTP серверов.


автор
datetime2(3)

Я вижу, что "а эта ваша "дата" (которая может быть вчерашней) она какого типа? " - ответ автора темы datetime2(3). Я не вижу, чтобы в таблице был столбец типа int с заполнением YYYYMMDD. Я вижу, что автор рано или поздно придет к этому. "Я художник, я так вижу" (с)
18 апр 18, 12:02    [21348207]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
TaPaK,

вы хотите поспорить про определение миллисекунда или что?

.000

будете как и iap что-то возражать про это определение?
18 апр 18, 12:06    [21348227]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
TaPaK,

вы хотите поспорить про определение миллисекунда или что?

.000

будете как и iap что-то возражать про это определение?

нет милисекунд в данном типи или вы будете и дальше фантазировать как Andy_OLAP
18 апр 18, 12:08    [21348238]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
TaPaK
Konst_One
TaPaK,

вы хотите поспорить про определение миллисекунда или что?

.000

будете как и iap что-то возражать про это определение?

нет милисекунд в данном типи или вы будете и дальше фантазировать как Andy_OLAP


не понял ваше высказывание. имеете что-то возразить?

  DECLARE @d DATETIME2(3) = GETDATE()
   -- Expression extracts last 3 digits expecting milliseconds
  SELECT CAST(RIGHT(CAST(@d AS VARCHAR), 3) AS INTEGER) AS ms
18 апр 18, 12:11    [21348259]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
TaPaK
пропущено...

нет милисекунд в данном типи или вы будете и дальше фантазировать как Andy_OLAP


не понял ваше высказывание. имеете что-то возразить?

  DECLARE @d DATETIME2(3) = GETDATE()
   -- Expression extracts last 3 digits expecting milliseconds
  SELECT CAST(RIGHT(CAST(@d AS VARCHAR), 3) AS INTEGER) AS ms


https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-2017
18 апр 18, 12:15    [21348279]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
чуденсо, что вы открыли наконец то хэлп, но вы про точность типа у ТС забыли datetime2(3)
18 апр 18, 12:17    [21348294]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
mr_max
Member

Откуда:
Сообщений: 1310
Konst_One
чуденсо, что вы открыли наконец то хэлп, но вы про точность типа у ТС забыли datetime2(3)

дата хранится в формате
 2018-04-17 08:24:43.699
18 апр 18, 12:18    [21348300]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
чуденсо, что вы открыли наконец то хэлп, но вы про точность типа у ТС забыли datetime2(3)

журнал "Деградант" продолжает хронику

автор
datetime2 [ (fractional seconds precision) ]

fractional seconds precision
18 апр 18, 12:20    [21348303]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
TaPaK
Konst_One
чуденсо, что вы открыли наконец то хэлп, но вы про точность типа у ТС забыли datetime2(3)

журнал "Деградант" продолжает хронику

автор
datetime2 [ (fractional seconds precision) ]

fractional seconds precision


вы хоть сами почитайте на досуге
https://ru.wikipedia.org/wiki/Секунда

а то так и помрёте и не поймёте , чем миллисекунда от наносекугды отличается и что такое precision и scale.
вы всё упираете на физическое хранение данных в этом типе со стороны сервера, а мы речь ведём о другом
18 апр 18, 12:23    [21348313]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Konst_One
TaPaK
пропущено...

журнал "Деградант" продолжает хронику

пропущено...


вы хоть сами почитайте на досуге
https://ru.wikipedia.org/wiki/Секунда

а то так и помрёте и не поймёте , чем миллисекунда от наносекугды отличается и что такое precision и scale.
вы всё упираете на физическое хранение данных в этом типе со стороны сервера, а мы речь ведём о другом

теперь медленно: в дроби не время, ни в физическом смысле ни в смысле хранения. В приближении это транкейтнутые наносекунды, к времени это не имеет ни какого отношения это ДОЛИ
18 апр 18, 12:32    [21348358]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
Konst_One
Member

Откуда:
Сообщений: 11615
просвещайтесь, господа:
http://www.sqlines.com/sql-server/datetime_or_datetime2_3
18 апр 18, 12:32    [21348362]     Ответить | Цитировать Сообщить модератору
 Re: удаление данных за вчерашний день  [new]
iap
Member

Откуда: Москва
Сообщений: 47101
Я не понимаю, что за базар тут развели?
Если просто проверять на равенство поле типа DATETIME2(3) и, например, CAST(DATEADD(DAY,-1,GETDATE()) AS DATE),
то скорее всего получим false, ибо поле типа DATETIME2(3) содержит время.
Это всё, из-за чего здесь возникли трения.
Обсуждать тут определения в документации типов DATETIME и DATETIME2 - это же абсурд.
18 апр 18, 13:34    [21348716]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить