Sql server T-SQL日期时间减法
我有一个专栏的开头和结尾。我想知道他们之间的小时数和分钟数。选择cast(结束-开始为varchar)会给出奇怪的结果,例如2009-07-24 06:16-2009-07-24 06:30会给出12:14AM的结果。。。将其转换为varchar很重要,因为稍后我将使用right()和left()从这个字符串中剪切出子字符串。如何获得正确的结果?将其转换为数字,否则它将尝试转换为日期。将其转换为数字,否则它将尝试转换为日期。您可以使用该函数 这将为您提供开始和结束之间的分钟数,然后您可以将其转换为小时和分钟。您可以使用该功能Sql server T-SQL日期时间减法,sql-server,Sql Server,我有一个专栏的开头和结尾。我想知道他们之间的小时数和分钟数。选择cast(结束-开始为varchar)会给出奇怪的结果,例如2009-07-24 06:16-2009-07-24 06:30会给出12:14AM的结果。。。将其转换为varchar很重要,因为稍后我将使用right()和left()从这个字符串中剪切出子字符串。如何获得正确的结果?将其转换为数字,否则它将尝试转换为日期。将其转换为数字,否则它将尝试转换为日期。您可以使用该函数 这将为您提供开始和结束之间的分钟数,然后您可以将其转换
这将为您提供开始和结束之间的分钟数,然后您可以将其转换为小时和分钟。用于以所需单位计算两个日期之间的差值。然后将结果转换为varchar。用于以所需单位计算两个日期之间的差值。然后将结果转换为varchar。您可能应该做一个您可能应该做一个您看到的问题的原因是SQL处理它存储日期的两部分的方式 日期存储为两部分,在数值内。第一部分,整数部分存储日期,第二部分,小数部分存储时间 如果你的两个日期分别等于1.50和1.25,那么1.25-1.50=-0.25-这将被分成两部分,-0天和.25时间。一天的0.25小时将转换为6小时,因此将给出6.00上午的时间
要获得正确的日期操作,您应该始终使用DATEDIFF和DATEPART。出现此问题的原因是SQL在存储日期时处理这两部分的方式 日期存储为两部分,在数值内。第一部分,整数部分存储日期,第二部分,小数部分存储时间 如果你的两个日期分别等于1.50和1.25,那么1.25-1.50=-0.25-这将被分成两部分,-0天和.25时间。一天的0.25小时将转换为6小时,因此将给出6.00上午的时间
要获得正确的日期操作,您应该始终使用DATEDIFF和DATEPART。varchars不应用于日期操作。像这样使用datediff:
declare @date1 datetime, @date2 datetime
select @date1 = getdate(), @date2 = DATEADD(n, 145, @date1)
SELECT @date1, @date2
select DATEDIFF(n, @date1, @date2) as DiffMinutes,
DATEDIFF(n, @date1, @date2)/60 as DiffHours,
DATEDIFF(n, @date1, @date2)%60 as DiffMinutesOfTheHour
varchars不应用于日期操纵。像这样使用datediff:
declare @date1 datetime, @date2 datetime
select @date1 = getdate(), @date2 = DATEADD(n, 145, @date1)
SELECT @date1, @date2
select DATEDIFF(n, @date1, @date2) as DiffMinutes,
DATEDIFF(n, @date1, @date2)/60 as DiffHours,
DATEDIFF(n, @date1, @date2)%60 as DiffMinutesOfTheHour
对于相对的小时和分钟: 使用: 返回:
Hours Minutes
----------- -----------
1 14
(1 row(s) affected)
对于相对的小时和分钟: 使用: 返回:
Hours Minutes
----------- -----------
1 14
(1 row(s) affected)
什么应该是数字?什么应该是数字?为什么要投反对票?“2009-07-24 06:16”与“2009-07-24 07:30”是否有1小时14分钟的不同?阿格涅斯卡,有什么例子吗??我将它运行了好几种组合,在天数、小时数和/或分钟数上都有所不同,效果很好。也许你误解了它的工作原理。给我一个开始日期和结束日期,这样会产生不正确的结果。为什么要投反对票?“2009-07-24 06:16”与“2009-07-24 07:30”是否有1小时14分钟的不同?阿格涅斯卡,有什么例子吗??我将它运行了好几种组合,在天数、小时数和/或分钟数上都有所不同,效果很好。也许你误解了它的工作原理。给我一个StartDate和EndDate,这样会产生不正确的结果。查看我的最新评论…查看我的最新评论。。。