Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL拆分日期_Sql_Sql Server_Date_Split - Fatal编程技术网

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生成序列的可怕实践时,我不断地引用它们