Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日期SQL减去一小时_Java_Sql_Postgresql - Fatal编程技术网

Java 从日期SQL减去一小时

Java 从日期SQL减去一小时,java,sql,postgresql,Java,Sql,Postgresql,我有一个实体,其日期属性表示为字符串,我无法将其更改为日期或时间戳。我需要获取所有不超过一小时的最新记录。 我有一个SQL查询,它返回最后一条最年轻的记录,现在我需要从中减去一个小时: SELECT p FROM Invoice p WHERE date >= ((SELECT MAX(date) FROM Invoice) 它是Java和Posgresql。当日期表示为字符串时,是否可以使用SQL执行此操作?选择p,以\u timestamp.data,“YYYYMMDD HH12MI

我有一个实体,其日期属性表示为字符串,我无法将其更改为日期或时间戳。我需要获取所有不超过一小时的最新记录。 我有一个SQL查询,它返回最后一条最年轻的记录,现在我需要从中减去一个小时:

SELECT p FROM Invoice p WHERE date >= ((SELECT MAX(date) FROM Invoice)
它是Java和Posgresql。当日期表示为字符串时,是否可以使用SQL执行此操作?

选择p,以\u timestamp.data,“YYYYMMDD HH12MI”-间隔“1小时”新建\u dt 从发票p,其中日期>=从发票中选择MAXdate
您必须修改to_时间戳的日期格式模式。我不知道数据库的格式是什么。

在java中,可以通过解析实现。但在sql中不可能,因为您获取的数据类型是字符串。

假设日期是列名

select * from Invoice where "date"::date > now()-'1 hour'::interval
用于将字符串转换为实际日期。 同时:您获取最新行的查询也可以改进:

挑选* ,截止日期为“YYYY-MM-DD”-间隔为“1小时” 来自发票p 订单截止日期描述上次为空 限值1; 假设ISO格式。无论哪种方式,您的文本表示都必须符合排序顺序,或者您需要做更多的工作

从日期中减去间隔会自动生成时间戳

不要选择p,这是表别名,它会将整行作为单列而不是单个列

订购方式/限制1更快速、更可靠。您的构造可以返回多行

你应该在日期上有一个索引来加快速度

您仍然应该将其存储为日期,而不是字符串。即使你说你不能


并且不要使用基本类型名称作为列名。

那里的日期格式是什么?可能重复的日期需要使用。如果不将数据存储为某种类型的日期,速度会非常慢。日期格式为:yyyy/MM/dd HH:MM:ss@BoristheSpider:PostgresERROR中没有日期子项:格式化字符串详细信息中mm字段的值冲突:此值与相同字段类型的先前设置冲突。数据库示例:2015/03/11 12:55:55您是否将“YYYYMMDD HH12MI”更新为数据库中的相同格式?是的,我更新了:“yyy/MM/dd HH:MM:ss;Postgre有自己的日期格式。SimpleDataFormat在那里不起作用。检查函数-formatting.html链接。试一试:YYYY/MM/DD HH:MI:ssSQL中的字符串比较实际有效吗?从发票p中选择p,其中日期>=:lastHour假设lastHour已正确解析字符串并减去一小时