Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как к дате прибавить часы? / 6 сообщений из 6, страница 1 из 1
23.07.2002, 10:41:19
    #32038173
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
Таблица Waybill, в ней поля IDWaybill (Integer), Date, Datetime (smalldatetime).
Есть триггер:

Create Trigger Waybill_Datetime
On dbo.Waybill
For Insert, Update
As
If Update (Date)
begin
update Waybill
set Waybill.DateTime = Inserted.Date+Datepart(Hour,GetDate())/24
from Waybill inner join Inserted on
Waybill.IDWaybill = Inserted.IDWaybill
end

Этот триггер должен при изменении значения в поле Date (там лежит только дата, без часов) записывать в поле Datetime ту же дату + текущий час.
Зачем это? Ну если кто спросит, объясню потом.
Например, юзер в 10:45 вносит в поле Date значение "23.07.02". В поле Datetime должно появиться "23.07.02 10:00:00"
Так вот, в поле Datetime появляется только лишь "23.07.02", без часов.

Не работает конструкция
set Waybill.DateTime = Inserted.Date +
Datepart(Hour,GetDate())/24

к дате без часов не прибавляется дробь!!

Причем, если написать
set Waybill.DateTime = Inserted.Date + 0.42
то все ОК.
Хелп!!!
...
Рейтинг: 0 / 0
23.07.2002, 10:48:51
    #32038175
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
declare @MyDate DateTime

set @MyDate='20020723'

select @MyDate, DateAdd(hour,10,@MyDate)

Надеюсь, идея понятна?
...
Рейтинг: 0 / 0
23.07.2002, 11:05:20
    #32038179
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
Владимир, спасибо большое. Идею понял.
...
Рейтинг: 0 / 0
23.07.2002, 13:24:38
    #32038230
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
О причине

Все дело в этом выражении

SELECT Datepart(Hour,GetDate())/24

а вернее в том, к какому типу приводит SQL результат данного выражения, а приводит он его как ни странно к типу int, т.е. без дробной части. И результатом всегда будет 0

Избежать этого можно
- либо так
SELECT Datepart(Hour,GetDate())/24.00

- либо так
SELECT Datepart(Hour,GetDate())/CAST(24 as float)
...
Рейтинг: 0 / 0
23.07.2002, 15:02:44
    #32038266
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
Спасибо большое, Glory.
...
Рейтинг: 0 / 0
23.07.2002, 19:01:09
    #32038353
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к дате прибавить часы?
А я вообще не въехал, почему нельзя прямо сделать
...
set Waybill.DateTime = GetDate()
...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как к дате прибавить часы? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]