繁体   English   中英

使用日期时间格式的TO_TIMESTAMP()上的SQL错误2207

SQL Error 2207 on TO_TIMESTAMP() using datetime format

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在Postgres中,我试图在WHERE谓词中进行基于日期/时间的查询。

当我尝试选择此日期/时间格式时,SQL错误提示该值必须为整数。 我不确定为什么不认为我的17分钟不是整数,或者为什么只将其视为1而不是17?

SELECT *
FROM history
WHERE create_time > TO_TIMESTAMP('2018-10-08T23:17:44.728','yyyy-MM-dd''T''HH:mm:ss.SSS');

错误:“ HH”的值“:1”无效详情:值必须为整数。 SQL状态:22007

2 个回复

问题是由于在HH之前使用了''T'' ,并且DB发出信号,您可能会使用

TO_TIMESTAMP('2018-10-08 23:17:44.728','yyyy-mm-dd HH24:MI:SS.MS')

代替。

您正在尝试使用包含T的日期值,并且似乎在尝试向TO_TIMESTAMP声明T是要忽略的文字值。 问题是您通过放置'T' (撇号-T-撇号,转义)来执行此操作,这使解析器增加了3个字符,然后在期望HH时从23:17遇到“:1”:

--your date, and underneath it, the format you gave
2018-10-08T23:17:44.728
yyyy-MM-dd'T'HH:mm:ss.SSS

您能看到HH与(1)垂直对齐吗? Postgres抱怨它期望可以解析为23的整数,但是遇到了字符串:1,它不是整数。

这个问题:

Postgres-具有to_timestamp()忽略/不读取日期/时间字符串中间的特定字符

意味着您可以在T所在的格式中放置一个空格,或者只是将您需要的字符串转换为时间戳记-postgres显然可以将该字符串解析为时间戳记,而不必为它明确地实际设置格式

尝试:

SELECT *
FROM history
WHERE create_time > TIMESTAMP '2018-10-08T23:17:44.728'

SELECT *
FROM history
WHERE create_time > cast('2018-10-08T23:17:44.728' as timestamp)

SELECT *
FROM history
WHERE create_time > TO_TIMESTAMP('2018-10-08T23:17:44.728','yyyy-MM-dd HH:mm:ss.SSS');

您甚至可能会发现这可行:

SELECT *
FROM history
WHERE create_time > TO_TIMESTAMP('2018-10-08T23:17:44.728', 'yyyy MM dd HH mm ss SSS')

数字与格式字段对齐,空格用于其他所有您要忽略的内容(连字符,冒号,点等)

1 使用 to_timestamp 进行错误的时间转换

我有一个 Java 应用程序,它使用这种方法将时间写入 DB 中的字段( time ): 数据库中的字段具有bigint类型 我使用这个查询来显示时间: 结果似乎有 3 小时的差异。 正确的时间是 7:00,但显示为 4:00 ...

2 使用to_timestamp在SQL中的日期之间进行比较

必须比较两个日期,一个是MM / DD / YYYY格式,另一个是YYYY / MM / DD HH:MI:SS。 如何才能做到这一点。 我尝试使用to_timestamp,但它抛出类似以下错误: [错误]执行(23:27):ORA-01843:无效月份 ...

3 使用 SQL 日期时间默认 current_timestamp 和格式

我在 MySQL 数据库中有一个列,它是 DATETIME 数据类型,它的默认值是 CURRENT_TIMESTAMP。 我正在尝试使用 PHP 的date_format()函数对其进行格式化,但出现以下错误 警告:date_format() 期望参数 1 为 DateTimeInterface ...

4 即使to_timestamp格式错误,即使所有NLS设置都匹配,也无法导入导出的SQL数据,因为ORA-01830错误

我使用Oracle SQL Developer 18.2.0完全导出了数据库。 然后,我收集了所有NLS设置,以便能够在通过sqlplus工具导入时将其重新应用。 我使用以下脚本来收集NLS会话值: 它给了我以下结果: 因此,我将这些行复制到了导出的SQL文件的开头。 ...

5 使用to_timestamp函数无法解析Twitter时间戳

我通过流API下载了twitter数据,并希望将数据放入Postgres(9.3版)中进行地理分析。 解析json数据有效,但是我无法将Twitter时间设为适当的时间戳。 这是json的时间戳: 我试图这样解析: 但是,只有在我摆脱+0000部分的情况下,它才有效。 ...

6 ORA-01830:日期格式图片在使用TO_TIMESTAMP转换整个输入字符串之前结束

尽管使用了TO_TIMESTAMP函数,但我的查询(当被应用程序触发时)仍然无法执行此错误。 这是错误消息- 仅在一个环境上会引发此错误,而在其他环境下则可以正常工作。 手动执行查询也可以。 所有环境上的会话时间戳格式都是相同的(登录时由触发器更新)。 ...

8 使用to_char // to_timestamp时出错

我在PostgreSQL中有一个数据库,并且正在使用此数据库在PHP中开发应用程序。 问题是,当我执行以下查询时,我在phpPgAdmin中得到了一个不错的结果,但是在我的PHP应用程序中却得到了一个错误。 查询: 这是PHP中的错误 解决此错误的目的是在php中使用OR ...

9 sql错误-日期时间的数据截断-使用java / hibernate / timestamp属性

场景: 我有一个接收xml的servlet,解析它们(使用JAXB),将解析的数据持久保存到MySQL DB(使用hibernate),还保存了xml的副本以供将来参考。 解析失败时,也会保存该xml。 在这些情况下,我会收到一封包含错误摘要的电子邮件,然后检查已保存的xml,以查找发 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM