To_char for Oracle SQL无法正常工作

时间:2016-06-13 14:13:30

标签: sql oracle

我有以下查询,即使有:

也无法检索数据
import Alamofire
import Foundation
import XCTest

class BaseTestCase: XCTestCase {
    let timeout: NSTimeInterval = 30.0

    func URLForResource(fileName: String, withExtension: String) -> NSURL {
        let bundle = NSBundle(forClass: BaseTestCase.self)
        return bundle.URLForResource(fileName, withExtension: withExtension)!
    }
}

start_time字段是时间戳字段。因此,我使用to_char转换它,并与用户传递的04-MAY-10值进行比较。但它没有获取任何数据。 请帮忙。提前致谢

2 个答案:

答案 0 :(得分:6)

to_char()关注模式的情况。所以,你正在制作“04-may-10”,这是不一样的。

所以,试试这个:

where TO_CHAR(INTERFACE_RUN.START_TIME, 'DD-MON-YY') = '04-MAY-10';

那就是说,我更喜欢:

where trunc(INTERFACE_RUN.START_TIME) = date '2010-05-04'

或:

where INTERFACE_RUN.START_TIME >= date '2010-05-04' AND
      INTERFACE_RUN.START_TIME < (date '2010-05-04') + 1

为什么呢?有两个原因。首先,列是日期,所以我更喜欢 date 比较。其次,我更喜欢ANSI / ISO标准日期格式。第二个版本也可以轻松利用START_TIME列上的索引。

答案 1 :(得分:4)

Oracle会将日期转换为小写,从而生成&#39; 04-may-10&#39;
尝试&#39; DD-MON-YY&#39; (大写)

select TO_CHAR(sysdate, 'dd-mon-yy') from dual
union all
select TO_CHAR(sysdate, 'dd-MON-yy') from dual;

TO_CHAR(S
---------
13-jun-16
13-JUN-16