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

Откуда: Москва
Сообщений: 240
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 


CREATE FUNCTION dbo.ddiff(@d1 datetime)
RETURNS int
AS
BEGIN
                
                return DATEPART(MILLISECOND, @d1) 
                
END
GO


print dbo.ddiff ('2012-11-06 12:09:48.011')
go

10

select DATEPART(MILLISECOND, '2012-11-06 12:09:48.011')
go

11



Почему результаты разные?
Спасибо.
6 ноя 12, 12:37    [13425755]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
http://msdn.microsoft.com/en-us/library/ms187819.aspx
Rounded to increments of .000, .003, or .007 seconds


Сообщение было отредактировано: 6 ноя 12, 12:40
6 ноя 12, 12:40    [13425776]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
SQLMantis
Member

Откуда: Москва
Сообщений: 240
Спасибо!
6 ноя 12, 12:45    [13425814]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
а какого же типа '2012-11-06 12:09:48.011' при вызове datepart?
6 ноя 12, 13:13    [13426082]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
ну, например, как-то так:

select DATEPART(MILLISECOND, cast( '2012-11-06 12:09:48.011' as datetime ))
10
select DATEPART(MILLISECOND, cast( '2012-11-06 12:09:48.011' as time ))
11
6 ноя 12, 13:28    [13426240]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
разве не к datetime должно быть неявное преобразование?
6 ноя 12, 13:32    [13426279]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Зайцев Фёдор
разве не к datetime должно быть неявное преобразование?
Похоже на datetime2. А вот DATEADD режет до datetime.
6 ноя 12, 13:42    [13426365]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Гавриленко Сергей Алексеевич
Зайцев Фёдор
разве не к datetime должно быть неявное преобразование?
Похоже на datetime2. А вот DATEADD режет до datetime.

на ошибку похоже
6 ноя 12, 14:00    [13426493]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Зайцев Фёдор,

на ошибку не похоже. похоже на отсутствие явного способа передать константу нужного типа с одной стороны и лень указать точный тип посредством cast / convert с другой
6 ноя 12, 14:04    [13426522]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Glory
Member

Откуда:
Сообщений: 104751
Зайцев Фёдор
Гавриленко Сергей Алексеевич
пропущено...
Похоже на datetime2. А вот DATEADD режет до datetime.

на ошибку похоже


SQL Server 2005 uses the following precedence order for data types:

user-defined data types (highest)
sql_variant
xml
datetime
smalldatetime

SQL Server 2008 R2 uses the following precedence order for data types:

user-defined data types (highest)
sql_varian t
xml
datetimeoffset
datetime2
datetime
smalldatetime
6 ноя 12, 14:07    [13426541]     Ответить | Цитировать Сообщить модератору
 Re: datepart в функции  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
уже посмотрел, datetime2 действительно выше )
6 ноя 12, 14:17    [13426592]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить