来自ResultSet java的mysql getDateTime
我有两列在MySql数据库中存储日期时间值
当我尝试从Java中的ResultSet获取它们时,没有选项:
getDateTime()
我应该使用getDate()
还是不可以
提前谢谢
你可以在下面搜索框中键入要查询的问题!
我有两列在MySql数据库中存储日期时间值
当我尝试从Java中的ResultSet获取它们时,没有选项:
getDateTime()
我应该使用getDate()
还是不可以
提前谢谢
# 1 楼答案
您可以使用ResultSet.getTimeStamp()
# 2 楼答案
如果将时间戳标记为日期并将其转换为
java.sql.Timestamp
,则结果为DD:MM:YYYY 00:00:00
,因为日期不包括时间。因此,它选择默认值为00:00:00
基于CSV报告的^{} 获取记录的示例:
涉及的SQL查询用于表创建和多记录插入:Oracle Multi insert
# 3 楼答案
在MySQL中更喜欢时间戳而不是日期时间
首先,如果数据库中的datetime要表示时间点,请使用MySQL中的
timestamp
数据类型,而不是datetime
。一个datetime
是开放的,可以解释为读取器或它碰巧使用的程序读取的任何时区。这可能导致难以调试的错误。timestamp
数据类型在各种RDBMS中的行为不同。在MySQL中,它确保日期和时间以UTC为单位,从而将错误的解释排除在任何其他时区中。这样更安全。如果您所在时区的用户在数据库中读取日期和时间有点困难,那么这是值得的爪哇。时间
使用
ResultSet.getObject()
将日期和时间从数据库检索到java中的类型。时间,现代Java日期和时间API。问题中提到或暗示的类java.sql.Timestamp
、java.sql.Date
和java.util.Date
以及其他答案都设计得很差,而且早已过时,因此我建议改用现代API。它需要一个兼容JDBC4.2的驱动程序。我们大多数人都有这种能力,其中一个已经为MySQL服务很多年了。所以我希望你没事如果无法更改MySQL中的数据类型,请使用Java中的
LocalDateTime
从datatime
列检索值。它的运行方式与上面的代码相同回答你的具体问题
不,不会的
getDate()
给你一个java.sql.Date
只保存数据库中的日期部分,时间部分将丢失。正如我所说的,java.sql.Date
的设计也很糟糕-这是在已经设计糟糕的java.util.Date
之上的一个真正的黑客-所以你无论如何都不应该想要它链接
# 4 楼答案
使用
getDate()
只会返回一个Date
,因此在您的情况下,如果希望同时使用getTimestamp(String columnLabel)
-这应该有效,还可以用数据库中的实际列名替换String columnLabel
# 5 楼答案
或使用从日期到字符串的类型转换:
resultSet.getDate(1).toString());
将返回:
2014-02-18
DB现场数据:“2014-02-18 00:00:00.000”