相关疑难解决方法(0)

LocalDateTime 和 SQL Server JDBC 4.2 驱动程序

我正在尝试在java.time最新版本的 Sql Server JDBC 驱动程序中使用新类。正如我所读到的,它应该只适用于方法:PreparedStatement.setObject()ResultSet.getObject()

所以我创建了示例代码,但不能让它与 ResultSets 一起工作。我不知道我在这里做错了什么。

Connection connection = DriverManager.getConnection(connectionString);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM myTable WHERE ? BETWEEN date_from AND date_to");
preparedStatement.setObject(1, LocalDateTime.now());   // That works

ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
    Object o = resultSet.getObject("date_from"); 
    o.getClass() returns java.sql.Timestamp

    LocalDateTime dateTime = resultSet.getObject("date_from", LocalDateTime.class);
}
Run Code Online (Sandbox Code Playgroud)

这会引发异常:

com.microsoft.sqlserver.jdbc.SQLServerException:不支持转换为类 java.time.LocalDateTime。

驱动版本:mssql-jdbc-6.5.4.jre8-preview.jar

SQL Server 版本:2016


https://docs.microsoft.com/en-us/sql/connect/jdbc/jdbc-4-2-compliance-for-the-jdbc-driver?view=sql-server-2017

如何解释底部表格中的这句话:

Java 8 中的新 Java 类:LocalDate/LocalTime/LocalDateTime、OffsetTime/OffsetDateTime

新的 JDBC 类型:TIME_WITH_TIMEZONE、TIMESTAMP_WITH_TIMEZONE、REF_CURSOR

REF_CURSOR is not supported in SQL Server. …

java sql-server jdbc mssql-jdbc

7
推荐指数
1
解决办法
4969
查看次数

Java:通过Parse.com REST API将日期对象作为JSONObject发送

我正在尝试通过Parse的REST API在我的Parse.com数据库中使用HttpsUrlConnection创建一个新对象.他们的REST API只接受JSON.我已经完成了所有工作,数据库将接受新的对象条目 - 除了我尝试包含Date字段时.当我传入日期时,服务器完全拒绝该对象.

我在他们的文档中找到了这个描述,用于在使用REST API时如何在对象中添加Date字段:

Parse移动客户端库还支持日期,二进制数据和关系数据.在REST API中,这些值被编码为JSON哈希值,并且__type字段设置为指示其类型,因此如果使用正确的编码,则可以读取或写入这些字段.

Date类型包含一个字段iso,其中包含以ISO 8601格式存储的UTC时间戳,精度为毫秒级:YYYY-MM-DDTHH:MM:SS.MMMZ.

{
  "__type": "Date",
  "iso": "2011-08-21T18:02:52.249Z"
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我想创建一个新对象并将其传递给数据库,我假设我需要创建另一个JSONObject并将其传递到相应的字段中.然而,当我尝试时,它仍然拒绝它.下面是我尝试将Date对象添加为要传递的参数,存储在自己的JSONObject中.我究竟做错了什么?基于文档在JSON中发送Date对象的正确方法是什么?

//datePicked is a Calendar object
Date sendTime = datePicked.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String sendTimeInUTC = formatter.format(sendTime);  

//Storing the Date object as a JSONObject, as specified
JSONObject dateAsObj = new JSONObject();
dateAsObj.put("__type", "Date");
dateAsObj.put("iso", sendTimeInUTC);

//jsonParam is the JSONObject that is being sent over to Parse's REST API
jsonParam.put("sendTime", dateAsObj);
Run Code Online (Sandbox Code Playgroud)

这是完整的函数,它产生http请求,用于上下文和引用:

private void runHttpRequest(final String emailAddress, final String password, …
Run Code Online (Sandbox Code Playgroud)

java json date parse-platform jsonobject

6
推荐指数
1
解决办法
1万
查看次数

在java中生成UTC时间

我想将Java 01/01/2100的UTC时间设置为'2100-01-01 00:00:00'.我正在收到"2100-01-01 00:08:00".任何想法,如何纠正这一点.

public Date getFinalTime() {
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    Date finalTime = null;

    try
    {
        finalTime = df.parse("01/01/2100");            
    } catch (ParseException e)
    {
        e.printStackTrace();
    }

    calendar.setTime(finalTime);
    return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)

java datetime date

5
推荐指数
1
解决办法
1万
查看次数

Kotlin/java - 如何将日期时间字符串转换为即时?

我正在尝试从日期和时间字符串创建 Instant 的实例。日期的格式如下yyyy-MM-dd。所以这些值可能如下所示:

val date = "2021-11-25"
val time = "15:20"
Run Code Online (Sandbox Code Playgroud)

我试图从这两个字符串中创建一个有效的瞬间,如下所示:

val dateTime = "${date}T${time}:00"
val instantDateTime = ZonedDateTime.parse(dateTime, 
                                          DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(defaultTimeZone)
                                         ).toInstant()
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

val instantDateTime = Instant.from(DateTimeFormatter .ISO_OFFSET_DATE_TIME.withZone(defaultTimeZone).parse(dateTime))
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我得到:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2021-11-25T15:20:00' could not be parsed at index 19
Run Code Online (Sandbox Code Playgroud)

java kotlin zoneddatetime

5
推荐指数
1
解决办法
1万
查看次数

Java Timestamp valueOf

我遇到了这样的代码片段:

Timestamp expiryDate = Timestamp.valueOf(dateStr + " " + "23:59:59.000");

这里dateStr是用户在表单中输入的字符串,格式为yyyy-mm-dd.现在,Timestamp.valueOf的行为使得它将不存在的日期转换为适当的正确日期.说2008年6月31日到2008年7月1日.

如果dateStr字符串实际上是有效日期,我如何检查Java?我知道我可以手动进行检查,但我想知道的是,是否已经有任何方法可以做同样的事情.

java timestamp

4
推荐指数
1
解决办法
5495
查看次数

第二天获得java.sql.Date

我有一个Date对象(java.sql.Date).我需要在那天晚上12点.所以我可以创建一个从当前时间到当天结束的时间段.

我该怎么计算时间java.sql.Date.请给我一个例子.

java date

4
推荐指数
3
解决办法
2万
查看次数

如何在没有 GMT 的情况下使用 java.time.ZonedDateTime 和 format.DateTimeFormatter?

执行以下操作:

val zonedFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm z")

ZonedDateTime.from(zonedFormatter.parse("31.07.2020 14:15 GMT"))
Run Code Online (Sandbox Code Playgroud)

给我:

"displayDate": "2020-07-31T14:15:00Z[GMT]"
Run Code Online (Sandbox Code Playgroud)

我想要没有 [GMT] 的:

"displayDate": "2020-07-31T14:15:00Z"
Run Code Online (Sandbox Code Playgroud)

java java-time

4
推荐指数
1
解决办法
258
查看次数

解析 LocalDate 但得到 DateTimeParseException;dd-MMM-uuuu

我正在尝试将 a 转换StringLocalDateusing DateTimeFormatter,但收到异常:

java.time.format.DateTimeParseException:无法在索引 5 处解析文本“ 2021-10-31 ”

我的代码是

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu");
String text = "2021-10-31";
LocalDate date = LocalDate.parse(text, formatter);
Run Code Online (Sandbox Code Playgroud)

我正在尝试从输入日期转换2021-10-3131-Oct-2021.

java java-time localdate datetimeformatter datetimeparseexception

4
推荐指数
1
解决办法
856
查看次数

使用Java在Postgresql中输入Date值

我正在尝试使用java和PostgreSQL编写数据库应用程序.我有一些日期数据类型的行.但是我无法使用以下代码向数据库添加任何条目:

Date aDate = null;
aDate.setYear(1990);
aDate.setDate(01);
aDate.setMonth(05);

preparedStatement prep = connection.prepareStatement("insert 
into exampletable values (?,?);");
prep.setDate(1, (java.sql.Date) aDate);
prep.setDate(2, (java.sql.Date) aDate);
Run Code Online (Sandbox Code Playgroud)

如何在java中使用查询在postgreSQL行中添加日期?

java postgresql date jdbc

3
推荐指数
1
解决办法
2万
查看次数

java.lang.IllegalArgumentException:参数值 [2023-12-25T17:19:54.622Z] 与预期类型不匹配 [java.time.ZonedDateTime (n/a)]

我迁移了这段代码:

import org.joda.time.DateTime;

@Entity
@Table(name = "purchases")
@Getter
@Setter
public class Purchases {

  @Column(name = "purchase_time")
  @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
  private DateTime purchaseTime;
}
Run Code Online (Sandbox Code Playgroud)

到这段代码:

import java.time.ZonedDateTime;

@Entity
@Table(name = "purchases")
@Getter
@Setter
public class Purchases {

  @Column(name = "purchase_time")
  private ZonedDateTime purchaseTime;
}
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

2024-01-24 17:20:00.219 ERROR 1 --- [eduler_Worker-1] .a.p.g.i.s.ProcessPendingPurchasesJob : Failed to start/complete pending job.

org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [2023-12-25T17:19:54.622Z] did not match expected type [java.time.ZonedDateTime (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [2023-12-25T17:19:54.622Z] did not match expected type …
Run Code Online (Sandbox Code Playgroud)

spring quartz-scheduler spring-boot java-time zoneddatetime

3
推荐指数
1
解决办法
183
查看次数