2009-05-08 4 views
0

Comment puis-je obtenir le résultat "My Dream Table Résultat"Comment puis-je créer ce calendrier avec un format d'heure stable?

CREATE TABLE #temp(
    [count] int 
    , [Time] nvarchar(50)) 
DECLARE @DateNow DATETIME,@i int 

SET @DateNow='00:00' 
SET @i=1; 
WHILE(@i<1440) 
    BEGIN 
     SET @DateNow=DATEADD(minute, 1, @DateNow) 
     INSERT INTO #temp ([count], [Time]) VALUES (0, @DateNow) 
     SET @[email protected]+1 
    END 
SELECT [count],CONVERT(VARCHAR(max), [Time], 104) AS [Time] FROM #temp 
DROP TABLE #temp 

Tableau Résultat:

Count |     Time 
----------------------------- 
    0 | Jan 1 1900 12:01AM 
    0 | Jan 1 1900 12:02AM 
    0 | Jan 1 1900 12:03AM 
    0 | Jan 1 1900 12:04AM 

Mais je n'aime pas ce tableau Format de l'heure n'est pas correct. J'ai besoin de cette table My Dream Table Résultat:

Count | Time 
    0 | 12:01 
    0 | 12:02 
    0 | 12:03 
    0 | 12:04 
    ... 
    ... 
    0 | 22:01 
    0 | 22:02 
    0 | 22:03 
    0 | 22:04 

Répondre

0

@DateNow est un DateTime aura ainsi la date Compoent ainsi

select right(left(convert(nvarchar, @DateNow, 121), 16), 5) 

vous donnera juste le composant de temps pour mettre dans la colonne yoru Nvarchar

while(@i<1440) 
begin 
    set @DateNow=DATEADD(minute, 1, @DateNow) 
    insert into #temp ([count], [Time]) values(0, right(left(convert(nvarchar, @DateNow, 121), 16), 5)) 
    set @[email protected]+1 
end 
SELECT [count], [Time] from #temp 
drop table #temp 

Et pour shits'n'giggles, voici comment le faire sans compter sur un objet DateTime.

CREATE TABLE #temp (
    [count] int, 
    [Time] nvarchar(50) 
) 


DECLARE @hour int, @min int, @i int 
SELECT @hour = 0, @min = 0, @i = 1 

WHILE (@hour < 24) 
BEGIN 
    WHILE (@min < 60) 
    BEGIN 
     INSERT INTO #temp ([count], [time]) 
     VALUES (@i, REPLACE(STR(@hour, 2, 0), ' ', 0) + ':' + REPLACE(STR(@min, 2, 0), ' ', 0)) 
     set @min = @min + 1 
     set @[email protected]+1 
    END  
    set @min = 0 
    set @hour = @hour + 1 
END 

SELECT * FROM #Temp 
+0

Vous êtes ok. Merci beaucoup!!! – Penguen

+0

Pouvez-vous regarder s'il vous plaît mon autre question. Cette question est liée à cela. http://stackoverflow.com/questions/839386/how-can-i-left-out-join-these-temp-default-data-and-another-table J'ai besoin de votre aide s'il vous plaît !!! – Penguen

0

SQL Server 2008 inclut le concept d'un type de données de temps.

Check this out:

CREATE TABLE dbo.Table_1 
(
testtime time(7) NULL, 
testdate date NULL, 
testdatetime datetime NULL 
) ON [PRIMARY] 
GO 

insert table_1 
(testtime, testdate, testdatetime) 
values (GETDATE(), GETDATE(), GETDATE()) 

CREATE TABLE dbo.Table_2 
(
testtime time(0) NULL, 
testdate date NULL, 
testdatetime datetime NULL 
) ON [PRIMARY] 
GO 
insert table_2 
(testtime, testdate, testdatetime) 
values (GETDATE(), GETDATE(), GETDATE()) 

select * from Table_2 
select * from Table_1 
Questions connexes