Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较oracle sql查询中的日期时出错_Sql_Oracle_Oracle11g - Fatal编程技术网

比较oracle sql查询中的日期时出错

比较oracle sql查询中的日期时出错,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我正在编写一个sql查询,需要将varchar列值转换为date,并在where子句中使用它 以下是我正在尝试的查询 SELECT * FROM ( SELECT DISTINCT t1.record_id, t1.column_name, t1.value, t1.row_index, t1.start_date, t1.end_date, t2.value AS val FROM sf_monthly_fin_exp t1,

我正在编写一个sql查询,需要将varchar列值转换为date,并在where子句中使用它

以下是我正在尝试的查询

SELECT *
FROM
  ( SELECT DISTINCT t1.record_id,
    t1.column_name,
    t1.value,
    t1.row_index,
    t1.start_date,
    t1.end_date,
    t2.value AS val
   FROM sf_monthly_fin_exp t1,
    sf_monthly_fin_exp t2
  WHERE t1.row_index         = t2.row_index
  AND t1.generated_report_id = t2.generated_report_id
  AND t1.generated_report_id =11700
  AND t2.column_name         = 'Date'
  AND t2.value              <> 'Total'
  AND t1.column_name = 'xyz'
  ORDER BY t1.row_index
  )
WHERE TO_DATE(val, 'dd/mm/YYYY') = TO_DATE('05/01/2014', 'dd/mm/YYYY');
我在询问中做错了什么,如有任何帮助,将不胜感激

您尝试将“t2.value”转换为日期。您可能希望转换“t1.value”:


但是为什么要在varchar列中存储日期呢?请提供示例数据。你应该先修改你的设计。将日期存储为字符串是一种非常糟糕的设计。使用适当的数据类型。此表是一种键值对,它存储多种值,其中一种是Date,列名是Date,值是存储为varcher的某个日期值。@varun以create和insert语句的形式提供示例数据。
val
中的数据是什么样子的?当您知道除日期之外还有其他值时,为什么首先需要转换为日期?为什么不做简单的字符串搜索,如
WHERE val='05/01/2014'
ORA-01858: a non-numeric character was found where a numeric was expected
01858. 00000 - a non-numeric character was found where a numeric was       expected.
WHERE TO_DATE(value, 'dd/mm/YYYY') = TO_DATE('05/01/2014', 'dd/mm/YYYY');