如何在输入控件中获取java.sql.Timestamp的默认值表达式



>我需要为我的日期时间输入控件输入默认值表达式,并使用类 =java.sql.Timestamp

如果使用java.util.Date可以很容易地像这样完成DATE(2019,8,28)但它只返回日期。

如何使用类 =java.sql.Timestamp表示默认值表达式以具有日期和时间,以便它具有日期和时间?

执行报表时,它应在默认输入控件上显示正确的日期和时间。

你使用new java.sql.Timestamp(long time),因为构造函数Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)已被弃用

在您的情况下,如果您只想使用 jasper 报告的DATE函数(没有时间(,表达式将是

new java.sql.Timestamp(DATE(2019,8,28).getTime())

getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来构造函数中所需的毫秒

数如果你还需要指定时间 jasper-reports没有功能,我会使用Java 8(见下文(,但是如果这是不可能的,你可以使用Timestamp.valueOf但你需要符合格式yyyy-[m]m-[d]d hh:mm:ss[.f...]

java.sql.Timestamp.valueOf("2019-01-31 14:12:01")

如果您有其他格式,则可以解析您的值。

new java.sql.Timestamp(new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm").parse("2019/08/29 12:13").getTime()) 

爪哇 8

如果你喜欢使用java 8中引入的java.time包(它是线程安全的,处理更清晰的时区等(,可以使用类似的表达式。

new java.sql.Timestamp(java.time.LocalDate.of(2019, 08, 28).atTime(0,0).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())

或者,如果您想直接在构造函数中指定时间,请使用 LocaDateTime.of

new java.sql.Timestamp(java.time.LocalDateTime.of(2015, 02, 20, 12, 40, 25).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())

要了解更多信息,请参阅java.timeAPI

最新更新