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

Откуда:
Сообщений: 378
Доброго времени суток! Помогите пожалуйста с преобразованием. Поле BIRTHDAY содержит информацию о дате рождения. Необходимо преобразовать значения из этого поля в datetime, затем выделить только год рождения.

скрипт таблицы с наполнением:

CREATE TABLE [dbo].[test](
	[RDR_ID] [nvarchar](16) NOT NULL,
	[BIRTHDAY] [float] NULL,
 CONSTRAINT [PK_RDR] PRIMARY KEY CLUSTERED 
(
	[RDR_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[test] ([RDR_ID], [BIRTHDAY]) VALUES (N'014270', 29937.585451388888)
5 май 12, 07:37    [12511425]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
aleks2
Guest
declare @t TABLE (
	[RDR_ID] [nvarchar](16) NOT NULL,
	[BIRTHDAY] [float] NULL
) 
INSERT @t ([RDR_ID], [BIRTHDAY]) VALUES (N'014270', 29937.585451388888)

select *, CAST([BIRTHDAY] as datetime) as [ДатаРожд], YEAR(CAST([BIRTHDAY] as datetime)) as [ГодРожд] from @t
5 май 12, 07:58    [12511438]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Благодарю!
5 май 12, 08:12    [12511465]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Только интересную особенность заметил, прибавляются 2 дня к дате рождения. В данном случае это не важно, просто интересно почему...
014270 299375854513889 1981-12-19 14:03:02.997 1981
5 май 12, 08:20    [12511486]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
aleks2
Guest
nickolay_fff
Только интересную особенность заметил, прибавляются 2 дня к дате рождения. В данном случае это не важно, просто интересно почему...
014270 299375854513889 1981-12-19 14:03:02.997 1981


Из Access-а нибось волочите дату? Форматы двоичного представления дат в разных базах отличаются точкой отсчета.

Не надо конвертировать дату во флоат - надо прямо датой и тащить - тогда средства ODBC/ADO/NET сами преобразуют дату "как нада".
5 май 12, 08:27    [12511501]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
nickolay_fff
Member

Откуда:
Сообщений: 378
Неа, база на SqlServer 2008. Изначально клиент зачем-то конвертит введенную дату во float и пишет в таблицу. Это не мы придумали
5 май 12, 08:30    [12511509]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование из float в datetime  [new]
iljy
Member

Откуда:
Сообщений: 8711
nickolay_fff
Неа, база на SqlServer 2008. Изначально клиент зачем-то конвертит введенную дату во float и пишет в таблицу. Это не мы придумали

Клиент пытается использовать формат OLEDATETIME, там дата хранится как число с плавающей точкой, вот только отсчет идет от 30.12.1899, отсюда и 2 дня разницы.
5 май 12, 09:20    [12511646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить