查找非数字字符而不是数字字符

时间:2014-03-24 18:10:40

标签: oracle

我使用oracle 11 G

我想更新我的表

但我的日期格式有问题

我的列类型是 timeStamp ,这是我的专栏中的日期示例:   11/12/05 16:08:00,000000000

这是我的java代码

String query = "UPDATE transfers SET date_closed_transfer = '" +
                new Date() + "', date_arch = '" +
                new Date() + "', date_archhj = '" +
                dateArchHj + "',action_type = '2',status_transfer = '" + status +
                "' WHERE id_transfer = '" + id + "'";

这是我的疑问:

 UPDATE transfers

    SET date_closed_transfer = to_date('Mon Mar 24 10:39:25 GMT 2014','dd/mm/yy')',

    date_arch = to_date("Mon Mar 24 10:39:25 GMT 2014","dd/mm/yy")', 

    date_archhj = '1435/5/23',
    action_type = '2',
    status_transfer = 'AP'
    WHERE id_transfer = 'TR-70'

但我有这个错误:

Caused by: java.sql.SQLException: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique

已更新:

我尝试使用此查询:

UPDATE transfers SET date_arch = to_timestamp_tz('Tue Mar 25 09:29:14 GMT 2014','DY Mon DD HH24:MI:SS TZD YYYY'), date_archhj = '1435/5/24',action_type = '2',status_transfer = 'A' WHERE id_transfer = 'TR-78'

但我有这个错误:

Erreur SQL:ORA-01846:ce n'est pas in jour de semaine valide 01846. 00000 - “不是一周中的有效日期”

我也尝试:

UPDATE transfers SET date_closed_transfer = '25/03/2014', date_arch = '2014-03-25 09:59:47.123', date_archhj = '1435/5/24',action_type = '2',status_transfer = 'A' WHERE id_transfer = 'TR-61'

但我也有错误:

Erreur SQL:ORA-01843:ce n'st pas un mois valide 01843. 00000 - “不是有效月份”

这是日期的有效示例,应该在我的专栏

31/03/02 00:00:00,000000000

1 个答案:

答案 0 :(得分:1)

您在TO_DATE函数中提供的格式掩码需要与字符串匹配。另外,您可以使用TO_TIMESTAMP函数,因为您的列是TIMESTAMP数据类型。因此,它应该如下:

更新了查询

to_timestamp_tz('Mon Mar 24 10:39:25 GMT 2014','DY Mon DD HH24:MI:SS TZR YYYY')

参考文献:

Related SO question

The Oracle TO_DATE Function