mysql - SQL将延迟分钟的时间值更改为“前”分钟
问题描述
这是一个示例:我的数据库有几个条目,其中时间值是:
10:00:00
10:10:00
10:20:00
...
然后有时在这些值中我们有 1 分钟的延迟,例如:
10:20:00
10:31:00 <-
10:40:00
10:51:00 <-
我希望这些数字,每个,去他们各自的分钟:
10:20:00
10:31:00 -> 10:30:00
10:40:00
10:51:00 -> 10:50:00
编辑:时间是唯一的条目,我在另一列中有我的日期值,为了可视化我的列是
keyDate keyTime Sequency Value
12-03-2018 10:40:00 12 143
解决方案
请试试这个。
SELECT
CONVERT(TIME,CASE WHEN RIGHT(datepart(minute,BeginTime),1) = 1
THEN
CONVERT(VARCHAR(2),datepart(Hour,BeginTime)) +':'
+ CONVERT(VARCHAR(2),datepart(minute,BeginTime) - 1)
+':'
+ CONVERT(VARCHAR(2),datepart(second,BeginTime))
ELSE
CONVERT(VARCHAR(8),BeginTime)
END)
FROM @tbl
例如
Declare @tbl Table(
ArrangeId INT ,
BeginTime TIME,
EndDate NVARCHAR(50),
DeptId INT
)
INSERT INTO @tbl VALUES(1,'7:20:00','22:30',NULL)
INSERT INTO @tbl VALUES(3,'7:10:00','23:00',NULL)
INSERT INTO @tbl VALUES(2,'7:11:00','23:59',NULL)
INSERT INTO @tbl VALUES(4,'6:10:00','22:30',NULL)
INSERT INTO @tbl VALUES(4,'5:11:00','22:30',NULL)
INSERT INTO @tbl VALUES(4,'5:31:00','22:30',NULL)
SELECT
CONVERT(TIME,CASE WHEN RIGHT(datepart(minute,BeginTime),1) = 1
THEN
CONVERT(VARCHAR(2),datepart(Hour,BeginTime)) +':'
+ CONVERT(VARCHAR(2),datepart(minute,BeginTime) - 1)
+':'
+ CONVERT(VARCHAR(2),datepart(second,BeginTime))
ELSE
CONVERT(VARCHAR(8),BeginTime)
END)
FROM @tbl
推荐阅读
- python - PYTHON 问题:为什么我的代码在行号时显示“NONE”。9被处决?谁能帮助我?
- c# - C# UWP 为什么我不能添加第二个事件处理程序?
- sql - Suave 是否包含用于数据库的工具?
- r - 通过数据框中的数字有效地填充 NA 单元格
- java - 我无法将多张图片上传到服务器
- spring - JWT 身份验证导致与常规身份验证发生冲突。我无法从登录页面登录
- flutter - 我无法在图像小部件中显示从网络图像选择器获得的图像
- python - 如何获取类似 TreeView 的文件下拉列表
- google-drive-api - 如何使共享的 Colab 笔记本能够加载 h5 文件?
- reactjs - React 类组件不更新路由器上的状态