0

このように、テーブルに日時があります(テーブルの各行に2つ):

Row 1: 2012-06-31 01:00:00
Row 2: 2012-06-31 02:00:00
Row 3: 2012-06-31 03:00:00
Row 4: 2012-06-31 04:00:00
...

そして、レポートから取得するために、各時間を間隔として取得したい:

For the first row:  From 1 to 2
For the second row: From 2 to 3
...
For each row: 'From [hour(date)] to [hour(date)+1]'

しかし、CONVERT、CAST、DATEPART、または DATEADD のすべての組み合わせで「変換エラー」が発生するのを止めません。

SQL でこの種の問題に対処するのは初めてです...どうやってこれを行いますか?

4

3 に答える 3

3

これを試して:

CAST で DateEPART 関数を使用する

declare @dte datetime='2012-01-01 05:02:00'
select  'From '+ cast (DATEPART(HH,@dte) as char(2))+
             'to ' +cast(  DATEPART(HH,@dte)+1 as char(2))
 

SQL フィドルのデモ

編集:

テーブルから取得したい場合

declare @t table(dte datetime);
insert into @t values('2012-01-01 05:02:00');
insert into @t values('2012-01-01 06:02:00');
 
select  'From '+ cast (DATEPART(HH,dte) as char(2))+
             'to ' +cast(  DATEPART(HH,dte)+1 as char(2))
             from @t 
于 2012-09-03T08:37:12.220 に答える
2

これを試して :-

 Select 'From ' + Convert(varchar(2),datepart(hour,dateColumn)) 
  + ' to ' + convert(varchar(2),datepart(hour,dateColumn)+1)
 from Sample

SQLフィドル

于 2012-09-03T08:36:27.193 に答える
1

これを試して

select 'From '+RIGHT(dtColumn,len(dtColumn)-charindex(' ',dtColumn,1)) + ' To '+convert(varchar(8),dateadd(hh,1,convert(time,RIGHT(dtColumn,len(dtColumn)-charindex(' ',dtColumn,1))))) from yourtable
于 2012-09-03T08:47:47.423 に答える