我有两张有日期的桌子。第一个是11.12.2016 12:00:00:000和11.12.2016 12:45:06:000。
我知道在那个日期之间的时间是45分06秒。
如何计算WHERE语句并将其写入SELECT所有记录的时间将超过45分钟?
发布于 2016-12-21 20:22:58
DATEDIFF(second,...将精确到1秒。
使用DATEDIFF(minute,...,每个方向的误差最多可达1分钟。
SELECT *
FROM mytable
WHERE DATEDIFF(second,date_col_1,date_col_2) > 45*60这就是为什么您不希望在minute中使用datediff来查找分钟内的日期差异
declare @date1 datetime = '2016-12-01 00:00:00'
,@date2 datetime = '2016-12-01 00:01:59.99'
select datediff(minute,@date1,@date2) as datediff_minute
,datediff(second,@date1,@date2) as datediff_second+-----------------+-----------------+
| datediff_minute | datediff_second |
+-----------------+-----------------+
| 1 | 119 |
+-----------------+-----------------+declare @date1 datetime = '2016-12-01 00:00:59.99'
,@date2 datetime = '2016-12-01 00:01:00'
select datediff(minute,@date1,@date2) as datediff_minute
,datediff(second,@date1,@date2) as datediff_second+-----------------+-----------------+
| datediff_minute | datediff_second |
+-----------------+-----------------+
| 1 | 1 |
+-----------------+-----------------+发布于 2016-12-21 19:56:55
您可以使用DATEDIFF函数来完成它。
SELECT * FROM Table
WHERE DATEDIFF(minute,Column1,Column2) > 45您可以了解更多关于该这里的信息。
(不要忘记用相关的名称替换Table Column1和Column2。)
发布于 2016-12-21 20:35:20
您可以尝试创建这样的函数:
create function dbo.fn_diffdates ( @date1 datetime, @date2 datetime)
returns bit
as begin
declare @retValue bit = 0;
SET @retValue = iif( datediff(minute, @date2, @date2) > 45, 1, 0)
return @retValue
end和查询如下
select * from yourtable where dbo.fn_diffdates(date1, date2) = 1https://stackoverflow.com/questions/41270850
复制相似问题