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

Откуда:
Сообщений: 26
Каким образом можно проверить поле типа datetime в триггере и если время лежит в промежутке 00:00:00 и 00:00:04 обновить его на 00:00:05?

вот код который пришел в голову сразу только не знаю как в триггерах сохранять результаты запросов в переменную

SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable

f1 - поле типа datetime?

подскажите как это реализовать, заранее спасибо.
2 авг 13, 14:30    [14654069]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
да забыл уточнить MS SQL Server 2000
2 авг 13, 14:38    [14654165]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
nickalaus,

CREATE TABLE - где?
PRINT @@VERSION - где?
2 авг 13, 14:39    [14654188]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
nickalaus
да забыл уточнить MS SQL Server 2000
Напишите теперь CREATE TABLE.
Про PK не забудьте
2 авг 13, 14:40    [14654195]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
iap
nickalaus,

CREATE TABLE - где?
PRINT @@VERSION - где?


простите для чего это?
2 авг 13, 14:40    [14654197]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
nickalaus
iap
nickalaus,

CREATE TABLE - где?
PRINT @@VERSION - где?


простите для чего это?
Для триггера!
2 авг 13, 14:41    [14654205]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
nickalaus, подсказываю:

select convert(datetime, convert(nvarchar(17), GETDATE(), 120) + '05')


Дальше разберетесь?
2 авг 13, 14:41    [14654207]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Гость333
Member

Откуда:
Сообщений: 3683
create trigger dbo.trg_testtable_aiu
on dbo.testtable
after insert, update
as
  update t
  set f1 = НужнаяДатаВремя
  from inserted i
       inner join dbo.testtable t on t.pk = i.pk
  where i.f1 время лежит в промежутке 00:00:00 и 00:00:04
go

где pk — первичный ключ таблицы.
2 авг 13, 14:43    [14654228]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Minamoto
nickalaus, подсказываю:

select convert(datetime, convert(nvarchar(17), GETDATE(), 120) + '05')



Дальше разберетесь?
Как же он разберётся, если не понимает, зачем в триггере знать PK?
2 авг 13, 14:43    [14654237]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
Minamoto
nickalaus, подсказываю:

select convert(datetime, convert(nvarchar(17), GETDATE(), 120) + '05')


Дальше разберетесь?


щас попробую написать код и покажу здесь
2 авг 13, 14:44    [14654252]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
iap
Minamoto
nickalaus, подсказываю:

select convert(datetime, convert(nvarchar(17), GETDATE(), 120) + '05')



Дальше разберетесь?
Как же он разберётся, если не понимает, зачем в триггере знать PK?
С вашей помощью ;)
2 авг 13, 14:44    [14654258]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
create trigger dbo.trg_testtable_aiu
on dbo.testtable
after insert, update
as
  update t
  set f1 = НужнаяДатаВремя
  from inserted i
       inner join dbo.testtable t on t.pk = i.pk
  where i.f1 время лежит в промежутке 00:00:00 и 00:00:04
go

где pk — первичный ключ таблицы.

А, не посмотрел, MSSQL 2000, тогда этот код не годится
2 авг 13, 14:46    [14654279]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость333
Гость333
create trigger dbo.trg_testtable_aiu
on dbo.testtable
after insert, update
as
  update t
  set f1 = НужнаяДатаВремя
  from inserted i
       inner join dbo.testtable t on t.pk = i.pk
  where i.f1 время лежит в промежутке 00:00:00 и 00:00:04
go

где pk — первичный ключ таблицы.

А, не посмотрел, MSSQL 2000, тогда этот код не годится

Сорри, посмотрел в BOL 2000, таблица inserted там есть, всё ОК.
2 авг 13, 14:48    [14654295]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
Гость333 спасибо
2 авг 13, 14:52    [14654346]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Гость333
Гость333
create trigger dbo.trg_testtable_aiu
on dbo.testtable
after insert, update
as
  update t
  set f1 = НужнаяДатаВремя
  from inserted i
       inner join dbo.testtable t on t.pk = i.pk
  where i.f1 время лежит в промежутке 00:00:00 и 00:00:04
go


где pk — первичный ключ таблицы.

А, не посмотрел, MSSQL 2000, тогда этот код не годится
Чегой-то не годится?
Именно так и надо!

Просто надо конкретизировать НужнаяДатаВремя и время лежит в промежутке 00:00:00 и 00:00:04
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,2,'05')
.....
WHERE DATEPART(MINUTE,i.f1) BETWEEN 0 AND 4;
2 авг 13, 14:53    [14654364]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
iap
Гость333
пропущено...

А, не посмотрел, MSSQL 2000, тогда этот код не годится
Чегой-то не годится?
Именно так и надо!

Просто надо конкретизировать НужнаяДатаВремя и время лежит в промежутке 00:00:00 и 00:00:04
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,2,'05')
.....
WHERE DATEPART(MINUTE,i.f1) BETWEEN 0 AND 4;
Ошибся, конечно:
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,2,'05')
.....
WHERE DATEPART(SECOND,i.f1) BETWEEN 0 AND 4;
2 авг 13, 14:55    [14654381]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
Ошибся, конечно:
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,2,'05')
.....
WHERE DATEPART(SECOND,i.f1) BETWEEN 0 AND 4;

Или, скорее всего, так:
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,6,'05.000')
.....
WHERE DATEPART(SECOND,i.f1) BETWEEN 0 AND 4;
2 авг 13, 14:57    [14654411]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Гость333
iap
Ошибся, конечно:
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,2,'05')
.....
WHERE DATEPART(SECOND,i.f1) BETWEEN 0 AND 4;


Или, скорее всего, так:
.....
SET f1=STUFF(CONVERT(CHAR(23),i.f1,126),18,6,'05.000')
.....
WHERE DATEPART(SECOND,i.f1) BETWEEN 0 AND 4;
В первом сообщении говорилось только о секундах!
2 авг 13, 14:59    [14654433]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
iap
Minamoto
nickalaus, подсказываю:

select convert(datetime, convert(nvarchar(17), GETDATE(), 120) + '05')



Дальше разберетесь?
Как же он разберётся, если не понимает, зачем в триггере знать PK?


так подсказал бы а ты сразу заорал на меня :(
2 авг 13, 14:59    [14654442]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
мое условие такое

where (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) > 0 and (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) < 5
2 авг 13, 15:01    [14654463]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
всем спасибо огромное
2 авг 13, 15:03    [14654490]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
Гость333
Member

Откуда:
Сообщений: 3683
nickalaus
мое условие такое

where (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) > 0 and (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) < 5

То есть, например, если время = 00:00:00, то ничего не надо обновлять?
2 авг 13, 15:03    [14654493]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
nickalaus
iap
пропущено...
Как же он разберётся, если не понимает, зачем в триггере знать PK?


так подсказал бы а ты сразу заорал на меня :(
И где же CREATE TABLE?
Или Вам все должны, а для выполнения правил форума
пальцем шевельнуть считаете зазорным?
2 авг 13, 15:04    [14654506]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

Откуда:
Сообщений: 26
Гость333
nickalaus
мое условие такое

where (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) > 0 and (SELECT DATEPART(hh, f1) + DATEPART(mi, f1) + DATEPART(ss, f1) from testtable) < 5

То есть, например, если время = 00:00:00, то ничего не надо обновлять?


а да забыл больше либо равно нуля :)
2 авг 13, 15:05    [14654520]     Ответить | Цитировать Сообщить модератору
 Re: Проверка поля типа datetime триггере  [new]
nickalaus
Member

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


так подсказал бы а ты сразу заорал на меня :(
И где же CREATE TABLE?
Или Вам все должны, а для выполнения правил форума
пальцем шевельнуть считаете зазорным?


да никто мне ничего не должен, я это прекрасно понимаю и читал правила форума, просто когда быстро нужно хочется побыстрее описать проблему.
2 авг 13, 15:08    [14654574]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить