Oracle TO_DATE()函数

时间:2019-02-07 16:02:56

标签: c# oracle

我正在尝试将日期插入从excel电子表格导入的oracle数据库中。在电子表格的某些行中,日期以24小时格式表示,而在某些行中则以AM / PM格式表示。

我开始使用TO_DATE函数作为

将日期字符串转换为oracle格式
"TO_DATE(\'" + Timestamp + "\', 'MM/DD/YYYY HH:MI:SS AM', 'nls_date_language=american')"

此处的“时间戳记”是一个C#字符串变量,其日期为字符串格式。

当timestamp变量以24小时格式表示时,出现异常。有什么方法可以使我的C#代码接受两种日期格式并按原样插入到oracle表中?

1 个答案:

答案 0 :(得分:2)

您可以通过以下两种方式进行操作:

C#(如上所述)

DateTime.ParseExact有一个overload,可让您传递多种格式的字符串。它将使用第一个有效的。 DateTime.TryParseExact也有此重载。 DateTime.Parse不会。

string[] formats = {"dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy hh:mm:ss tt"};
DateTime Timestamp = DateTime.ParseExact(inputDate, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);

Oracle

让Oracle检查AM或PM并相应地调整格式字符串。这是原始的Oracle;我将字符串构建留给您:

TO_DATE(val,
  CASE WHEN REGEXP_LIKE(val, '(AM|PM)')
    THEN 'MM/DD/YYYY HH:MI:SS AM'
    ELSE 'MM/DD/YYYY HH24:MI:SS'
  END)

任何代码问题都让我知道。我不在可以测试这些代码片段的机器上。