tsql - SQL Server:让 DATETIME 持续 30 分钟
问题描述
我有一个小型存储过程(在 SQL Server 2012 中),它计算自年初以来的分钟数(以及其他一些事情)。目前它计算到当前时间的分钟数,它正在2019-01-02 10:29:28.910
使用:
SET @startDate = (SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))
SET @endDate = GETDATE()
SELECT DATEDIFF(MINUTE, @startdate, @endDate)
理想情况下,我想将其更改为最后 30 分钟标记,因此如果我现在运行它,它将显示2019-01-02 10:00:00.000
,如果我运行它,2019-01-02 10:42:28.910
它将返回2019-01-02 10:30:00.000
等等。
你能帮我吗?
解决方案
一种方法是使用模运算符在除以 30 时减去余数:
DECLARE @StartDate datetime2(0),
@EndDate datetime2(0);
SET @StartDate = (SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0));
SET @EndDate = GETDATE();
SELECT DATEADD(MINUTE,DATEDIFF(MINUTE, @StartDate, @EndDate) - (DATEDIFF(MINUTE, @StartDate, @EndDate) % 30),@StartDate);
推荐阅读
- c# - 我无法分配矩形变换
- android - 如何在安卓手机上不使用 AI 套件测量盒子/包裹尺寸
- cloudinary - 将具有特定 public_id 的图像上传到 cloudinary 到特定文件夹(node.js)
- python - 无法解析 Flask 中的 URL 参数
- powershell - 如何将 Vscode 控制台链接到单独的 cmd 或 powershell,以便在运行命令时将结果返回到单独的窗口中
- android - 单击 RecyclerView 时如何移动到新活动
- python - 复制的完整 xpath 仍然给我 NoSuchElementException Python Selenium
- python - 单击包含特定字符串的复选框
- python - 我不断收到错误“ValueError:int()的无效文字,基数为10:'a'”
- python - 在 Python (pandas) 中使用 groupby、count 和 max