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

Откуда:
Сообщений: 4
Есть 2008 сервер. В нем табличка с полем, в котором лежит время в формате: число миллисекунд с 1970 года.

Как сделать быстрые преобразования туда обратно, учитывая тот факт, что точность должна быть до миллисекунд.
Одно из значений поля: 1317129377998. (Это 9/27/2011 1:16:17 PM).
Мои варианты какието шибко медленные.
7 окт 11, 14:16    [11402174]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
АндрейNAY
точность должна быть до миллисекунд


Не получится...

datetime values are rounded to increments of .000, .003, or .007 seconds
7 окт 11, 14:18    [11402205]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
dateadd, datediff + datetime2?

З.Ы. Только вот непонятно, зачем изначально хранить все в миллисекундах?
7 окт 11, 14:20    [11402221]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
АндрейNAY
Member

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

datetime2 и SYSDATETIME() не помогут?
7 окт 11, 14:20    [11402227]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
АндрейNAY
Member

Откуда:
Сообщений: 4
Гавриленко Сергей Алексеевич,

А вы попробуйте сделать. Постоянные переполнения...
Гавриленко Сергей Алексеевич
З.Ы. Только вот непонятно, зачем изначально хранить все в миллисекундах?

Этот вопрос можно задать корпорации Symantec
7 окт 11, 14:22    [11402245]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
datetime2 поможет, но Вы же сказали:

автор
Есть 2008 сервер


, а datetime2 появился в 2008 R2.

И, было бы не плохо увидеть Ваш варинат...
7 окт 11, 14:25    [11402261]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
Glory
Member

Откуда:
Сообщений: 104751
АндрейNAY
А вы попробуйте сделать. Постоянные переполнения...

Ну так в цикле добавлять по макс.значению типа integer. А в конце остаток
7 окт 11, 14:25    [11402267]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
АндрейNAY
Member

Откуда:
Сообщений: 4
pkarklin
datetime2 поможет, но Вы же сказали:
автор
Есть 2008 сервер

, а datetime2 появился в 2008 R2.
И, было бы не плохо увидеть Ваш варинат...

Думал во всех 2008 есть)
Microsoft SQL Server Standard Edition (64-bit)
10.0.2531.0
7 окт 11, 14:33    [11402350]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
pkarklin
datetime2 поможет, но Вы же сказали:

автор
Есть 2008 сервер


, а datetime2 появился в 2008 R2.

И, было бы не плохо увидеть Ваш варинат...
У меня SQL2008, а DATETIME2 есть!
7 окт 11, 14:34    [11402361]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
pkarklin
, а datetime2 появился в 2008 R2.
Неа.

declare 
    @t datetime2
    
select @@version    

------------------------------------------------------------------
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) 
	Sep 16 2010 19:43:16 
	Copyright (c) 1988-2008 Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2)
7 окт 11, 14:35    [11402363]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
АндрейNAY
Думал во всех 2008 есть)
Microsoft SQL Server Standard Edition (64-bit)
10.0.2531.0


А нужен 10.50...
7 окт 11, 14:35    [11402367]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
pkarklin
А нужен 10.50...
Да не нужен, честно.
7 окт 11, 14:36    [11402375]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iljy
Member

Откуда:
Сообщений: 8711
АндрейNAY,

а в чем проблема-то?
;with t as(
	select 1317129377998 dt
)
select DATEADD(ms, dt%86400000, DATEADD(d,dt/86400000,'1970')) d
from t
Только точность все равно 3мс будет.
7 окт 11, 14:36    [11402377]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Был неправ.
7 окт 11, 14:39    [11402412]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DECLARE @V BIGINT=1317129377998;
SELECT CONVERT(VARCHAR, DATEADD(SECOND,@V/1000,'1970'),126)+'.'+CAST(@V%1000 AS VARCHAR);
7 окт 11, 14:45    [11402482]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Что-то у меня в примере выше полученный результат конвертируется в DATETIME '20110927 13:16:17.998',
а в DATETIME2(7) - '20110927 13:16:17.99'

Станно всё это...
7 окт 11, 14:48    [11402506]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
Что-то у меня в примере выше полученный результат конвертируется в DATETIME '20110927 13:16:17.998',
а в DATETIME2(7) - '20110927 13:16:17.99'

Станно всё это...
Сейчас проверил DATEPART(MILLISECOND,...) - получилось 998 для DATETIME2 и 997 для DATETIME.
Просто студия так рисует.
7 окт 11, 14:51    [11402531]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
chromatograph
Member

Откуда:
Сообщений: 33
как Вам такой вариант - C# функция
7 окт 11, 16:48    [11403816]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование времени в необычный формат.  [new]
iljy
Member

Откуда:
Сообщений: 8711
chromatograph
как Вам такой вариант - C# функция

Хреново.
7 окт 11, 17:37    [11404278]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить