Postgresql:迄今为止的整数
我在将整数日期(20180525)转换为YYYY-MM-DD格式的日期时遇到问题。是否有办法做到这一点,或者我应该将其转换为代码(本例中为Java)?在此方面的任何帮助都将不胜感激。谢谢大家! 如果您的日期存储为带有YYYYMMDD的整数,则可以通过首先强制转换到Postgresql:迄今为止的整数,postgresql,date,Postgresql,Date,我在将整数日期(20180525)转换为YYYY-MM-DD格式的日期时遇到问题。是否有办法做到这一点,或者我应该将其转换为代码(本例中为Java)?在此方面的任何帮助都将不胜感激。谢谢大家! 如果您的日期存储为带有YYYYMMDD的整数,则可以通过首先强制转换到TEXT将其传递给日期函数 SELECT date(20180525::TEXT) 否则,请使用函数将日期与日期格式化程序结合使用: SELECT to_date(20180525::text, 'YYYYMMDD') tl;博士
TEXT
将其传递给日期函数
SELECT date(20180525::TEXT)
否则,请使用函数将日期与日期格式化程序结合使用:
SELECT to_date(20180525::text, 'YYYYMMDD')
tl;博士
SQL或Java都可以很好地工作。有关SQL,请参阅Ali提供的
对于Java,将a传递给查询
2018-05-25
java.time
关于问题中提到的Java,下面是使用现代Java.time类的代码。您应该使用SQL还是Java来解析字符串取决于您的情况和喜好,因为这两种方法都是有效的
LocalDate
该类表示一个仅限日期的值,不包含一天中的时间和时区
您需要指定与输入匹配的格式模式。在这种情况下,您的输入字符串采用标准ISO 8601格式。具体地说,是ISO 8601格式的“基本”变体,它最大限度地减少了分隔符的使用。在java.time中,您将为您找到
ld.toString():2018-05-25
JDBC
从4.2及更高版本开始,您可以直接与数据库交换java.time对象。最好使用智能对象而不是哑字符串
String sql = "SELECT event_date FROM tbl WHERE event_date = ? ; " ;
…
myPreparedStatement.setObject( 1 , ld ) ;
和检索
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类
从哪里获得java.time类
- 然后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(20180525-在我看来不像一个整数日期,它看起来像一个没有空格的字符串日期。20180525-626在postgres中安装java只是为了这么做,这看起来像是很难做到的way@Jasen不,我指的是客户端应用程序代码。请注意
行。字符串sql
String sql = "SELECT event_date FROM tbl WHERE event_date = ? ; " ; … myPreparedStatement.setObject( 1 , ld ) ;
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;