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

Откуда: Saint-Petersburg
Сообщений: 230
Задача в ms sql server 2000
в БД есть 2 столбца.
первый типа data,второй варчар.допустим

data______________|hour|
18.08.2009 00:00:00|00-01
18.08.2009 00:00:00|01-02
18.08.2009 00:00:00|02-03
18.08.2009 00:00:00|03-04
18.08.2009 00:00:00|04-05
18.08.2009 00:00:00|05-06
18.08.2009 00:00:00| ...

и так до 00-00
Каким образом можно соединить эти два столбца чтобы на выходе получилась дата в виде(столбец дата на выходе)

data______________|hour|дата на выходе
18.08.2009 00:00:00|00-01|18.08.2009 00:00
18.08.2009 00:00:00|01-02|18.08.2009 01:00
18.08.2009 00:00:00|02-03|18.08.2009 02:00
18.08.2009 00:00:00|03-04|18.08.2009 03:00
18.08.2009 00:00:00|04-05|18.08.2009 04:00
18.08.2009 00:00:00|05-06|18.08.2009 05:00
18.08.2009 00:00:00| ...

Есть какие нибудь идеи?
19 авг 09, 16:54    [7557801]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Glory
Member

Откуда:
Сообщений: 104760
fobster
Задача в ms sql server 2000
в БД есть 2 столбца.
первый типа data

Что за тип данных такой - data ?
19 авг 09, 16:55    [7557810]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
datetime
19 авг 09, 16:57    [7557815]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33358
Блог
см CONVERT/CAST
19 авг 09, 16:57    [7557823]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Glory
Member

Откуда:
Сообщений: 104760
fobster
datetime

Ну так возьмите от второго поля два левых символа, преобразуйте в число и прибавьте к первому полю как часы
19 авг 09, 16:59    [7557831]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
SET DATEFORMAT dmy
SELECT DATEADD(hh, CAST(LEFT('01-02', 2) AS int), '18.08.2009 00:00:000')
19 авг 09, 16:59    [7557833]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Сергей Мишин
Member

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

SET DATEFORMAT dmy
DECLARE @t TABLE(data datetime,hour varchar(5))
INSERT @t 
	SELECT '18.08.2009 00:00:00','00-01'
	UNION ALL SELECT '18.08.2009 00:00:00','01-02'
	UNION ALL SELECT '18.08.2009 00:00:00','02-03'
	UNION ALL SELECT '18.08.2009 00:00:00','03-04'
	UNION ALL SELECT '18.08.2009 00:00:00','04-05'
	UNION ALL SELECT '18.08.2009 00:00:00','05-06'

SELECT
*, data+cast('01.01.1900 '+replace(hour,'-',':')+'' AS datetime)
FROM @t
19 авг 09, 17:04    [7557875]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Сергей Мишин
fobster,

SET DATEFORMAT dmy
DECLARE @t TABLE(data datetime,hour varchar(5))
INSERT @t 
	SELECT '18.08.2009 00:00:00','00-01'
	UNION ALL SELECT '18.08.2009 00:00:00','01-02'
	UNION ALL SELECT '18.08.2009 00:00:00','02-03'
	UNION ALL SELECT '18.08.2009 00:00:00','03-04'
	UNION ALL SELECT '18.08.2009 00:00:00','04-05'
	UNION ALL SELECT '18.08.2009 00:00:00','05-06'

SELECT
*, data+cast('01.01.1900 '+replace(hour,'-',':')+'' AS datetime)
FROM @t

а ниче, что там минуты появятся? ;)
19 авг 09, 17:06    [7557881]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
не внимательно прочёл задание, точнее так:
SELECT
*, data+cast('01.01.1900 '+left(hour,2)+':00' AS datetime)
FROM @t
19 авг 09, 17:07    [7557889]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
в таком коде
Сергей Мишин

SELECT
*, data+cast('01.01.1900 '+left(hour,2)+':00' AS datetime)
FROM @t

у меня вылазит ошибка Syntax error converting datetime from character string...
19 авг 09, 17:22    [7557980]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Сергей Мишин
Member

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

на каких данных вылазит, на моих, на своих?
19 авг 09, 17:29    [7558029]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
на моих
19 авг 09, 17:32    [7558050]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT CAST(STUFF(CONVERT(CHAR(23),[дата],126),12,2, LEFT([часы],2))AS DATETIME)[дата на выходе]FROM[таблица];
19 авг 09, 17:32    [7558051]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
[quot iap[/quot]
с такой штукой тоже
Syntax error converting datetime from character string...
что не так?((
19 авг 09, 17:34    [7558064]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
fobster
что не так?((


Ну, наверное, то, что Вы упорно не хотите замечать

SET DATEFORMAT dmy
19 авг 09, 17:35    [7558069]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
fobster
[quot iap

с такой штукой тоже
Syntax error converting datetime from character string...
что не так?(([/quot]Что у Вас хранится в поле [hour] (я-то его назвал "часы" )?
Сдаётся мне, там у Вас есть совсем не то, что Вы говорите
Например, '98-99'. Согласитесь, что 98 часов не бывает в строковом представлении даты.
19 авг 09, 17:38    [7558085]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
pkarklin
fobster
что не так?((


Ну, наверное, то, что Вы упорно не хотите замечать

SET DATEFORMAT dmy
126-й стиль от этого не зависит.
19 авг 09, 17:38    [7558091]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
iap

хранятся числа
00-01
01-02
02-03
03-04
...
23-00
т.е. часы
19 авг 09, 17:41    [7558113]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Glory
Member

Откуда:
Сообщений: 104760
fobster
iap

хранятся числа
00-01
01-02
02-03
03-04
...
23-00
т.е. часы

И кто поручится, что там нет

24-00
37-00
и тп значений ?
19 авг 09, 17:42    [7558121]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iljy
Member

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

вам же предложили просто прибавлять часы к дате!
select data, hour,
   dateadd(h, data, cast(left(hour, 2) as int))
from Table
19 авг 09, 17:45    [7558139]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Glory
fobster
iap

хранятся числа
00-01
01-02
02-03
03-04
...
23-00
т.е. часы

И кто поручится, что там нет

24-00
37-00
и тп значений ?
Или перед первой цифрой что-нибудь стоять может (тогда сразу LEFT(...,2) нельзя)
19 авг 09, 17:45    [7558145]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
fobster,

вам же предложили просто прибавлять часы к дате!
select data, hour,
   dateadd(h, data, cast(left(hour, 2) as int))
from Table
Но это может привести к изменению дня, месяца, года! В условии, мне кажется, это не предполагается...
19 авг 09, 17:47    [7558159]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Сергей Мишин
Member

Откуда:
Сообщений: 376
fobster
на моих

а что вернёт запрос?
SELECT * FROM @t WHERE cast(left(hour,2) AS int)>23
19 авг 09, 17:48    [7558169]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
fobster
Member

Откуда: Saint-Petersburg
Сообщений: 230
Сергей Мишин

Syntax error converting the varchar value '3W' to a column of data type int.
19 авг 09, 17:52    [7558197]     Ответить | Цитировать Сообщить модератору
 Re: дата+строка  [new]
Glory
Member

Откуда:
Сообщений: 104760
fobster
Сергей Мишин

Syntax error converting the varchar value '3W' to a column of data type int.

)))
19 авг 09, 17:52    [7558205]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить