将varchar值与sysdate进行比较

时间:2013-12-06 17:58:36

标签: datetime oracle11g

我得到了timeEnd VARCHAR2(4000 BYTE)

timeEnd                          value
2013-11-15 00:52:46.000          13NC1356
2013-11-08 01:18:15.000          13NC1241
2013-11-14 14:41:29.000          13NC1241
2013-11-05 06:40:48.000          13CP1183
2013-10-08 23:30:33.000          13CP1186
2013-11-09 01:08:39.000          13CP1186

我需要将这些datessysdate进行比较,如果唯一max(timeEnd)的{​​{1}}为24小时,我需要显示数据(目前为止)。

所以为了保持现在的简单,我需要以某种方式转换格式为value的{​​{1}} timeEnd值。 我尝试了很多东西,现在都失败了......

我会继续努力,只是觉得有人知道怎么做。

1 个答案:

答案 0 :(得分:1)

您的意思是转换为DATE数据类型吗? SYSDATE是一个返回当前数据库时间的函数。您的timeEnd字符串看起来像TIMESTAMP数据类型。如果你想 将其转换为TIMESTAMP(示例):

select to_timestamp(timeEnd,'YYYY-MM-DD HH24:MI:SS.FF')

如果您想转换为DATE,则需要删除小数秒:

select to_date(substr(timeEnd,1,19),'YYYY-MM-DD HH24:MI:SS') 

有关所有详细信息,请参阅Oracle Formatting options

您也可能想要质疑为什么要将日期/时间存储为字符串。使用正确的本机数据类型可以避免一系列问题。从长远来看,你会更快乐。