sql - 如何以 24 小时格式添加迄今为止的小时数
问题描述
例如,我想以 24 小时格式在结束日期中添加 8 小时。我尝试在第一行添加 + 8/24, 'DD-MM-YYYY HH24:MI:SS' 但这会产生错误。
到目前为止,这是我的查询。
SELECT to_char(IN_ENDDATE, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
解决方案
您的第一行将日期转换为字符串。然后,您不能向其添加 8/24。在转换之前进行添加:
SELECT to_char(IN_ENDDATE + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL;
IN_ENDDATE 确实需要是允许+8/24
工作的日期类型。如果是时间戳,请将其添加为间隔:
IN_ENDDATE + INTERVAL '8' HOUR
出于以下几个原因,使用此表单可能更安全:
- 它适用于日期和时间戳
- 它更具可读性
如果 IN_ENDDATE 是非日期类型(例如 varchar),那么您的查询在没有 的情况下工作,+8/24
因为它在传递给to_char
. 在这种情况下,要么明确说明您的转换:
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + 8/24.0, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
SELECT to_char(to_date(IN_ENDDATE, 'YYMMDD WHATEVER') + INTERVAL '8' HOUR, 'DD-MM-YYYY HH24:MI:SS')
INTO IN_END_DATE_STRING
FROM DUAL
或者将您的 IN_ENDDATE 参数设置为真正的日期类型
推荐阅读
- c# - Unity - 如何使用单个字符串调用 UI Button 的多个参数
- google-play - 如果我以 SDK 29 为目标并使用 requestLegacyExternalStorage = true,我的应用会在 5 月 5 日从 Google Play 中删除吗?
- php - 如何从 PHP 中的 JSON API 端点数据获取分层树结构?
- android - 在带有 Apple M1 芯片的 Apple MacBook Pro 中运行“react-native run-android”命令时无法检测到模拟器
- node.js - Node.JS 使用 FFMPEG 实时流式传输音频
- postgresql - 在 AWS DMS 迁移中禁用外键约束不适用于 Postgres
- java - 在此示例中,在没有 new() 的情况下,对实例方法的方法引用如何工作?
- ios - 在 Class iOS swift 中创建值类型属性
- java - 迁移到 Spring 5.3
- ios - 呈现工作表时Swiftui删除工具栏