我正在尝试在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
如何解释底部表格中的这句话:
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. …
我正在尝试通过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 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) 我正在尝试从日期和时间字符串创建 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) 我遇到了这样的代码片段:
Timestamp expiryDate = Timestamp.valueOf(dateStr + " " + "23:59:59.000");
这里dateStr是用户在表单中输入的字符串,格式为yyyy-mm-dd.现在,Timestamp.valueOf的行为使得它将不存在的日期转换为适当的正确日期.说2008年6月31日到2008年7月1日.
如果dateStr字符串实际上是有效日期,我如何检查Java?我知道我可以手动进行检查,但我想知道的是,是否已经有任何方法可以做同样的事情.
我有一个Date对象(java.sql.Date).我需要在那天晚上12点.所以我可以创建一个从当前时间到当天结束的时间段.
我该怎么计算时间java.sql.Date.请给我一个例子.
执行以下操作:
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) 我正在尝试将 a 转换String为LocalDateusing 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-31为31-Oct-2021.
java java-time localdate datetimeformatter datetimeparseexception
我正在尝试使用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行中添加日期?
我迁移了这段代码:
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) java ×9
date ×4
java-time ×3
jdbc ×2
datetime ×1
json ×1
jsonobject ×1
kotlin ×1
localdate ×1
mssql-jdbc ×1
postgresql ×1
spring ×1
spring-boot ×1
sql-server ×1
timestamp ×1