我如何获得结果“我的梦想表结果”
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 @i=@i+1
END
SELECT [count],CONVERT(VARCHAR(max), [Time], 104) AS [Time] FROM #temp
DROP TABLE #temp
表格结果:
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
但我不喜欢这张桌子时间格式不行。我需要这张桌子 我的梦想表结果:
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
答案 0 :(得分:0)
@DateNow是一个DateTime,所以也会有Date Compoent
select right(left(convert(nvarchar, @DateNow, 121), 16), 5)
将为您提供放入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 @i=@i+1
end
SELECT [count], [Time] from #temp
drop table #temp
对于shits'n'giggles,这里是如何在不依赖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 @i=@i+1
END
set @min = 0
set @hour = @hour + 1
END
SELECT * FROM #Temp
答案 1 :(得分:0)
SQL Server 2008包含时间数据类型的概念。
检查出来:
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