sql - 合并日期和时间并获取最新的日期时间

标签 sql oracle date datetime

我有一个给定的预言机表:

enter image description here

DatumDATEZeitVARCHAR2

我必须将它们合并到一个日期并获取它们的最大(=最新)日期。我用 c# 中的 oracle reader 读取它并将它们组合起来,但为此我必须加载所有行,然后搜索最大值:

DateTime Tempdate = new DateTime(); Tempdate = Convert.ToDateTime(reader.GetValue(0).ToString()); Tempdate = Tempdate.AddHours(Convert.ToDateTime(reader.GetValue(1).ToString()).Hour); Tempdate = Tempdate.AddMinutes(Convert.ToDateTime(reader.GetValue(1).ToString()).Minute); Tempdate = Tempdate.AddSeconds(Convert.ToDateTime(reader.GetValue(1).ToString()).Second);

如何在 SQL 语句中完成此操作,以便我只获取具有最新日期的行?

最佳答案

您可以在时间组件上使用TO_DATE():

SELECT datum + ( TO_DATE( zeit, 'HH24:MI:SS' ) - TRUNC( TO_DATE( zeit, 'HH24:MI:SS' ) ) )
FROM   table_name

然后,要获得最大值,您可以在此计算值上使用 MAX() ,或者考虑到可以使用日期/字母数字顺序比较这些值(假设时间分量不存在)超过23:59:59)你可以先找到最大值:

SELECT datum,
       zeit
FROM   (
  SELECT datum,
         zeit,
         ROW_NUMBER() OVER ( ORDER BY datum DESC, zeit DESC ) AS rn
  FROM   table_name
)
WHERE  rn = 1

这可以使用表上的任何索引。

然后在这一行上使用我的第一个查询(或 @AlexPoole 的 TO_DSINTERVAL() 解决方案)。

关于sql - 合并日期和时间并获取最新的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37590062/

相关文章:

mysql - mysql 中的过程

oracle - SQL Developer - 没有为 SQL 类型错误注册的读者

python - 从数据帧列中删除不连续的值

java - 从打印循环中排除日期

java - 安卓 : date format in a String

sql - 函数返回表变量

sql - 如何使用 PIVOT 在其单元格中同时显示平均值和计数?

java - 从 Java 运行 Oracle import 命令并查看控制台输出

sql - 动态选择要在 SELECT 语句中使用的列

mysql - SQL 将数据分组到“年”+“周数”容器中