我有一个包含以下数据的表:
logs.ip logs.fecha logs.metodo
66.249.93.79 19/Nov/2018:03:46:33 GET
所有数据列均为字符串,我想将logs.fecha转换为以下格式的日期:YYYY-MM-dd HH:mm:ss
我尝试以下查询:
SELECT TO_DATE(from_unixtime(UNIX_TIMESTAMP(fecha, 'yyyy-MM-dd'))) FROM logs
查询结果在所有行中均为NULL。
如何使所有行的转换字符串都有效?我知道我必须使用ALTER TABLE,但我不知道该怎么做。
谢谢
答案 0 :(得分:1)
得到null
的原因是因为输入字符串的格式与传递给unix_timestamp
的输入不同。 unix_timestamp
的第二个参数应指定第一个参数的字符串格式。在from_unixtime
中,您可以指定所需的输出格式。如果未指定任何内容,则对from_unixtime
的有效输入将以yyyy-MM-dd
格式返回输出。
可以通过以下方式修复错误。
from_unixtime(unix_timestamp(fecha,'dd/MMM/yyyy:HH:mm:ss'),'yyyy-MM-dd HH:mm:ss')
答案 1 :(得分:-1)
您只需要告诉Oracle您正在阅读的日期格式TO_DATE。 试试:
SELECT TO_DATE(fecha,'DD/MON/YYYY:HH:MI:SS') FROM logs