如何在sql中将多个DATES传递给TO_DATE

时间:2014-12-26 07:41:35

标签: sql oracle

我想选择多个date.And从应用程序我传递一个字符串值该字符串包含多个日期我如何使用to_date将整个字符串转换为日期或有任何其他方式?我无法执行以下查询

select * from emp 
where start_date in 
  TO_DATE('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00')

我也试过了下面的一个

where STRT_TIME IN 
  TO_DATE('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00',
         'DD-MON-RR HH24:MI:SS')

没有任何东西可以工作但是如果我删除了to_date它在DATABASE中工作正常但是从应用程序中获得错误?

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您需要制作一个IN日期列表...这么多来电话TO_DATE

where STRT_TIME IN (TO_DATE('11-Jan-15 20:30:00','DD-MON-RR HH24:MI:SS'),TO_DATE('11-Jan-15 08:00:00','DD-MON-RR HH24:MI:SS'),TO_DATE('11-Jan-15 20:00:00','DD-MON-RR HH24:MI:SS'))

你可以做相反的事情:即make TO_CHAR(STRT_TIME, 'DD-MON-RR HH24:MI:SS')并将其与IN字符串列表进行比较 - 但这不符合大数据集的效果。

答案 1 :(得分:0)

您可以尝试使用to_date将日期转换为字符文字,而不是将您的角色文学转换为to_char的日期:

select * from emp 
  where 
    to_char(start_date, 'DD-MON-RR HH24:MI:SS')
  in
    ('11-Jan-15 20:30:00', '11-Jan-15 08:00:00', '11-Jan-15 20:00:00')