SQL拆分日期
我想将表中的每一行的开始时间和停止时间拆分为天 例如:SQL拆分日期,sql,sql-server,date,split,Sql,Sql Server,Date,Split,我想将表中的每一行的开始时间和停止时间拆分为天 例如: User Site Title TimeStampStart(01-11-2013) TimeStampStop(05-11-2013) 我想获得间隔中以天为时间戳的五行: User Site Title TimeStampStart(01-11-2013) User Site Title TimeStampStart(02-11-2013) User Site Ti
User Site Title TimeStampStart(01-11-2013) TimeStampStop(05-11-2013)
我想获得间隔中以天为时间戳的五行:
User Site Title TimeStampStart(01-11-2013)
User Site Title TimeStampStart(02-11-2013)
User Site Title TimeStampStart(03-11-2013)
User Site Title TimeStampStart(04-11-2013)
User Site Title TimeStampStart(05-11-2013)
我已经创建了一个ListDates函数,它允许我从两个时间戳中按天分割,但我不能使用它,因为我需要使用一个表作为参数。您可以使用system table Master..spt_值获得一个连续的整数列表,并将其连接到源中,每次将整数添加到开始日期(并在结束日期停止)。e、 g
或者,创建自己的数字表,可以反复使用,而无需在每次需要时动态生成一个数字表。您可以使用system table Master..spt_值获取整数的顺序列表,并将其连接到源中,每次将整数添加到开始日期(并在结束日期停止)
或者,创建自己的数字表,可以反复使用,而无需在每次需要时动态生成一个数字表。您可以使用system table Master..spt_值获取整数的顺序列表,并将其连接到源中,每次将整数添加到开始日期(并在结束日期停止)
或者,创建自己的数字表,可以反复使用,而无需在每次需要时动态生成一个数字表。您可以使用system table Master..spt_值获取整数的顺序列表,并将其连接到源中,每次将整数添加到开始日期(并在结束日期停止)
或者,创建自己的数字表,可以反复使用,而无需在每次需要时动态生成一个数字表。如果您有一个数字表,这相当简单
CREATE TABLE dbo.Numbers(n INT PRIMARY KEY);
INSERT dbo.Numbers(n) SELECT TOP (1000) rn = ROW_NUMBER() OVER
(ORDER BY [object_id]) FROM sys.all_objects;
-- if you may have dates that may be more than 1000 days apart (~3 years),
-- increase TOP and use a cross join against one of the other system views
然后:
选择s.站点、日期添加(日期、n.n、时间开始)
从dbo.YourTable作为s
内部连接dbo.number为n
在n.n上,如果您有一个数字表,那么这相当简单
CREATE TABLE dbo.Numbers(n INT PRIMARY KEY);
INSERT dbo.Numbers(n) SELECT TOP (1000) rn = ROW_NUMBER() OVER
(ORDER BY [object_id]) FROM sys.all_objects;
-- if you may have dates that may be more than 1000 days apart (~3 years),
-- increase TOP and use a cross join against one of the other system views
然后:
选择s.站点、日期添加(日期、n.n、时间开始)
从dbo.YourTable作为s
内部连接dbo.number为n
在n.n上,如果您有一个数字表,那么这相当简单
CREATE TABLE dbo.Numbers(n INT PRIMARY KEY);
INSERT dbo.Numbers(n) SELECT TOP (1000) rn = ROW_NUMBER() OVER
(ORDER BY [object_id]) FROM sys.all_objects;
-- if you may have dates that may be more than 1000 days apart (~3 years),
-- increase TOP and use a cross join against one of the other system views
然后:
选择s.站点、日期添加(日期、n.n、时间开始)
从dbo.YourTable作为s
内部连接dbo.number为n
在n.n上,如果您有一个数字表,那么这相当简单
CREATE TABLE dbo.Numbers(n INT PRIMARY KEY);
INSERT dbo.Numbers(n) SELECT TOP (1000) rn = ROW_NUMBER() OVER
(ORDER BY [object_id]) FROM sys.all_objects;
-- if you may have dates that may be more than 1000 days apart (~3 years),
-- increase TOP and use a cross join against one of the other system views
然后:
选择s.站点、日期添加(日期、n.n、时间开始)
从dbo.YourTable作为s
内部连接dbo.number为n
关于n.n,如果你知道如何解决,你能详细说明一个解决方案吗?Thanks@pobrelkey您确定您的评论吗?!!您使用的是哪台数据库服务器?数据是以dd mm yyyy的形式存储在varchar列中的,还是实际上是datetime或date?问题不清楚。您是否可以使用一些实际/示例数据和预期的数据更新问题结果?如果您知道如何解决,请详细说明解决方案好吗?Thanks@pobrelkey您确定您的评论吗?!!您使用的是哪台数据库服务器?数据是以dd mm yyyy的形式存储在varchar列中的,还是实际上是datetime或date?问题不清楚。您是否可以使用一些真实/示例数据更新问题,并期望ed结果?如果您知道如何解决,请详细说明解决方案好吗?Thanks@pobrelkey您确定您的评论吗?!!您使用的是哪台数据库服务器?数据是以dd mm yyyy的形式存储在varchar列中的,还是实际上是datetime或date?问题不清楚。您是否可以使用一些真实/示例数据更新问题,并进行测试反恐执行局的结果?如果你知道怎么做,你能详细说明解决方案吗?Thanks@pobrelkey您确定您的评论吗?!!您使用的是哪台数据库服务器?数据是以dd mm yyyy的形式存储在varchar列中的,还是实际上是datetime或date?问题不清楚。您是否可以使用一些真实/示例数据和预期的结果?我个人的观点是,该表只是没有文档化,因为它是SQL Server内部工作的一部分,而不是为了用户的利益而存在,因此需要文档化。它从Sysbase时代起就存在了,所以我不会为它屏息以待消失。我个人的观点是,该表只是没有文档记录,因为它是SQL Server内部工作的一部分,而不是为了用户的利益而存在,因此需要文档记录。自Sysbase出现以来,它就一直存在,所以我不会为它屏息以待消失。我个人的观点是,该表只是没有文档记录,因为它是SQL Server内部工作的一部分,而不是为了用户的利益而存在,因此需要文档记录。自Sysbase出现以来,它就一直存在,所以我不会为它屏息以待o消失。我个人的观点是,该表只是没有文档化,没有必要记录它的用途,因为它是SQL Server内部工作的一部分,而不是为了用户的利益而存在,因此需要文档化。它从Sysbase时代起就存在,所以我不会屏息等待它的出现消失。也许不是说它的地方,也许是老新闻,但顺便说一句,这些SQL性能文章非常精彩。我在看到(在我看来)时会不断引用它们使用递归CTE生成序列的可怕实践。谢谢,也谢谢你的整个坏习惯。谢谢@GarethD,感谢你的好话。这个解决方案很好地满足了我的需要,谢谢很多人。也许不是说这个的地方,也许是老新闻,但这些SQL性能文章在t当我看到(在我看来)使用递归CTE生成序列的可怕实践时,我不断地引用它们