迄今为止的sql字符串
我试图将Eclipse中的字符串“5/23/14 02:23:24”转换为要插入SQL语句的日期。我的守则如下:
String dateAndTime = "5/23/14 02:23:24";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
Date date = sdf.parse(dateAndTime);
long dateLong = date.getTime();
insertStatement.setDate(1, new java.sql.Date(dateLong));
我希望看到
23-MAY-2014 2.23.24.000000000 PM
在我的桌子上,但我看到
23-MAY-2014 12.00.00.000000000 AM
谁能解释一下我做错了什么
谢谢
# 1 楼答案
标准} 状态:
DATE
SQL类型没有任何与之关联的时间信息,因此the javadocs for ^{您将希望改用^{} 。它对应于SQL类型
TIMESTAMP
,它保存日期和时间数据# 2 楼答案
爪哇。时间
旧式日期时间API(
java.util
日期时间类型及其格式API,SimpleDateFormat
)已过时且容易出错。建议完全停止使用它,并切换到java.time
,即modern date-time API*使用现代日期时间API的解决方案:
LocalDateTime
:LocalDateTime
的实例设置到数据库中:从Trail: Date Time了解有关modern date-time API*的更多信息
*无论出于何种原因,如果您必须坚持使用Java 6或Java 7,您都可以使用ThreeTen-Backport作为大多数Java的后台端口。Java 6&;的时间功能;7.如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请选中Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。
# 3 楼答案
您正在调用} 。它只表示日期,而不是日期和时间
setDate
,它使用^{您应该考虑使用^ {CD3>},使用^{} 。(对于您的特定数据库,可能还有其他方法,但这可能是最简单的通用解决方案):