【SQL】格式为yyyymmddhh:mm:ss的时间格式转换

格式为yyyymmddhh:mm:ss的时间格式转换

医务部要求统计住院时间48小时以内病人的手术情况,通过计算出区时间cqrq与入区时间rqrq的时间差,可以进行统计。

金仕达数据库中的时间格式为yyyymmddhh:mm:ss,非标准格式的字符串格式,需要转换成标准格式的时间格式datetime。

使用一下语句

datediff (hour,
convert (datetime,substring (rqrq,1,4)+'-'+substring (rqrq,5,2)+'-'+substring (rqrq,7,2)+' '+substring (rqrq,9,8),120),
convert (datetime,substring (cqrq,1,4)+'-'+substring (cqrq,5,2)+'-'+substring (cqrq,7,2)+' '+substring (cqrq,9,8),120))


 

其中substring 函数是截取字符串,第一个变量是被截取的字符串,可以使用如'****'的格式;第二个变量是字符串开始的位数;第三个变量是截取的字符数量。本例中,substring (rqrq,1,4) 是指 讲字符串rqrq的从第一位开始截取四位,即年份yyyy。

convert函数进行格式转换,有三个变量,第一个是目标格式;第二个是被转换的字段;第三个变量是可选变量,转换时间格式时,表示时间格式类型。全部的时间类型附后。

datediff函数进行时间差计算,也是三个变量,第一个是计算时间的单位,可以计算年year,月month,日day,时hour,分minute,秒second,毫秒ms,纳秒ns;第二个变量是减数,也就是前一个时间;第三个变量是被减数,是较后的时间。

 

------------------------------------------------

附全部的时间格式:

 

### SQL Server 时间格式转换为 `yyyy-MM-dd HH:mm` 的方法 在 SQL Server 中,可以使用多种方式将时间格式转换为目标格式 `yyyy-MM-dd HH:mm`。以下是几种常见的实现方法: #### 方法一:使用 `CONVERT` 函数 SQL Server 提供了内置的 `CONVERT` 函数来处理日期和时间格式转换。通过指定样式参数,可以直接获取目标格式的时间字符串。 ```sql SELECT CONVERT(VARCHAR, GETDATE(), 120) AS FormattedDate; ``` 此查询会返回当前时间并将其格式化为 `yyyy-mm-dd hh:mi:ss` 形式[^1]。如果只需要保留到分钟级别,则可以通过截断秒部分的方式进一步调整: ```sql SELECT LEFT(CONVERT(VARCHAR, GETDATE(), 120), 16) AS FormattedDate; ``` 这一步骤利用了 `LEFT` 函数提取前 16 个字符,从而得到所需的 `yyyy-MM-dd HH:mm` 格式[^1]。 --- #### 方法二:使用 `FORMAT` 函数 自 SQL Server 2012 起引入了 `FORMAT` 函数,允许更灵活地定义输出格式。对于目标格式 `yyyy-MM-dd HH:mm`,可按如下方式进行操作: ```sql SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm') AS FormattedDate; ``` 这种方式更加直观易读,但也需要注意性能开销可能较高,尤其是在大数据量场景下[^2]。 --- #### 方法三:组合函数手动构建 如果不希望依赖特定版本的功能或者需要兼容旧版数据库实例,也可以借助其他字符串拼接技术完成相同任务: ```sql SELECT CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR(2)), 2) + '-' + RIGHT('0' + CAST(DAY(GETDATE()) AS VARCHAR(2)), 2) + ' ' + RIGHT('0' + CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR(2)), 2) + ':' + RIGHT('0' + CAST(DATEPART(MINUTE, GETDATE()) AS VARCHAR(2)), 2) AS FormattedDate; ``` 这种方法虽然较为繁琐,但在某些受限环境中可能是唯一的选择[^2]。 --- ### 总结 以上三种方案分别适用于不同需求和技术背景下的开发人员。推荐优先考虑基于标准库支持的操作(如 `CONVERT` 或者现代环境中的 `FORMAT`),因为它们不仅简化代码逻辑还能提高维护效率[^1]。 ```sql -- 推荐写法 (针对大多数情况) SELECT LEFT(CONVERT(VARCHAR, GETDATE(), 120), 16) AS FormattedDate; -- 替代写法 (仅限于高版本支持 Format()) SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm') AS FormattedDate; ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值