试图清理别人在postgres中所做的一些功能。
有人知道以下内容吗?它工作正常,但日期格式在以'1999-09-07 16:30:00.000'开始进入时发生了变化
我不知道之前的格式是什么。
select
case
when dbDate = '' then null
when dbDate != '^\d.*' then dbDate::timestamp
else '1900-01-01'::date + dbDate::int
end as dbDate
每当我用它给我的日期来调用函数时
invalid input syntax for integer: "1999-09-07 16:30:00.000"
答案 0 :(得分:2)
这个不错的功能是采用多种日期输入并对它们进行标准化。
我认为它期望以下之一:
将日期作为INT
投放的原因是因为在前两次测试失败后,写这篇文章的人期待 INT
。他们想像Excel一样将整数添加到时间的开头(即1900-01-01)。
1999-09-07 16:30:00.000
未通过第二次测试,即使它可以作为时间投射。
这会传递给else
,而INT
无法将其强制转换为1900-01-01
,并会抛出错误。
在这种情况下,您需要更改第二次测试。使它成为允许你进入的日期时间的东西,但这会拒绝应该添加到1900-01-01
的数字。
如果你不认为你的数字应该被添加到select
case
when dbDate = '' then null
else dbDate::timestamp
end as dbDate
,那么就去掉第三个测试并使用
writer.println("GET " + path + " " + protocol);
//writer.println();
writer.println("Host: " + hostname);
writer.println();
writer.flush();