SQL Server:查询以获取特定日期中的日期分钟数
下面的查询返回日期某个小时的分钟数 例如,如果日期值='2017-07-19 05:50:00.000',它将返回SQL Server:查询以获取特定日期中的日期分钟数,sql,sql-server,Sql,Sql Server,下面的查询返回日期某个小时的分钟数 例如,如果日期值='2017-07-19 05:50:00.000',它将返回50 我的问题是我需要在指定的日期获得分钟,而不是表中存在的所有日期 查询: SELECT DATEPART(MINUTE, ClockOut) FROM [dbo].[Attendance] WHERE DATEPART(HOUR, ClockOut) = '5' 我试图在'2017-07-19'中仅返回分钟数的查询,但未返回任何记录 SELECT
50
我的问题是我需要在指定的日期获得分钟,而不是表中存在的所有日期
查询:
SELECT
DATEPART(MINUTE, ClockOut)
FROM
[dbo].[Attendance]
WHERE
DATEPART(HOUR, ClockOut) = '5'
我试图在'2017-07-19'
中仅返回分钟数的查询,但未返回任何记录
SELECT
DATEPART(MINUTE, ClockOut)
FROM
[dbo].[Attendance]
WHERE
DATEPART(HOUR, ClockOut) = '5' AND ClockOut = '2017-07-19'
样本数据
打卡
2017-07-19 05:50:00.000
2017-07-20 05:51:00.000
2017-07-21 05:52:00.000
我只需要在此日期返回第5小时的分钟数
'2017-07-19'
您的计时列包含日期时间(2017-07-19 12:03:42),因此它的值永远不会精确等于日期(2017-07-19)。改为使用范围,以便查询计划可以在发条时使用潜在索引。强制转换为日期或使用DatePart
可以避免在行数较大时导致执行时间较长的问题
SELECT DATEPART(MINUTE, ClockOut)
FROM [dbo].[Attendance]
WHERE DATEPART(HOUR, ClockOut) = 5
AND ClockOut BETWEEN '2017-07-19'
AND '2017-07-20' -- start of next day
如果使用ClockOut='2017-07-19',就像写'2017-07-19 0:00:00'。尝试使用DataPart(yyyy,Clockout)=2017和DataPary(MM,Clockout)=7以及DataPart(dd,Clockout)=19您将日期时间与日期进行比较,这就是它没有返回所需结果的原因
SELECT DATEPART(MINUTE, ClockOut)
FROM [dbo].[Attendance]
WHERE DATEPART(HOUR, ClockOut) = '5'
AND CAST(ClockOut AS DATE) = '2017-07-19';
你能提供一个样本数据吗?我刚刚添加了数据