【发布时间】:2011-12-16 06:25:44
【问题描述】:
当我将 SQL DateTime 插入数据库时,我得到 2007-02-07 12:00:00.00
但我制作了这样的Date 对象:2007-02-07 17:29:46.00
如何获取数据库中秒的值。它总是把它改回12:00:00.00
date.setYear(Integer.valueOf(parsedDate[2].replaceAll(" ", "")) - 1900);
date.setMonth(Integer.valueOf(parsedDate[0].replaceAll(" ", "")));
date.setDate(Integer.valueOf(parsedDate[1].replaceAll(" ", "")));
...
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
我应该使用任何格式化程序吗?
【问题讨论】:
-
“日期”(代表某个时间点的数字)与其格式无关(相同数字可以表示为“2007-02-07”或“ 2007-07-02" 或 "2/7/2007"。它也与您的时区无关(相同的数字可以是洛杉矶的“2/7/2007”和伦敦的“2/8/2007”) . 最后一个“日期”(例如“2/7/2007”)与日期时间(例如“2/7/2007 09:15am”)具有不同的值。我猜你可能正在使用“日期”,您的意思是使用“日期时间”。
-
PS:java.util.date 表示“日期”或“日期时间”。 java.sql.date 只是“日期”。对于 MS Sql Server 等数据库,“日期”或“日期时间”与“时间戳”不同。 stackoverflow.com/questions/2305973/…
-
PPS:在 MS Sql Server 中(如果您正在使用),“时间戳”绝对不是日期或日期时间:sqlteam.com/article/timestamps-vs-datetime-data-types。如果您想要一个日期(无论一天中的什么时间),请将您的 SQL 列设为“日期”。如果您想要一天中的时间(与日历日期无关),请将其设为“时间”。在 NO CIRCUMSTANCES 下,使用 SQL Server“时间戳”来保存逻辑时间/日期列。
-
那么我无法将日期和时间保存在我上面提到的同一列中 2007-02-07 17:29:46.00?我必须将它们分成两列吗?顺便说一句,我使用的是 ms sql server
-
不!这意味着如果要保存“2007-02-07 17:29”,则应将 MSSQL 中的列定义为“日期时间”。如果您只想保存“2007-02-07”,则应将该列定义为 MSSQL“日期”。 Java 的“java.sql.Date”是仅限日期的。 Java 的“java.util.Date”同时处理日期和日期/时间。并且 MSSQL“时间戳”既不是日期也不是时间——除非你知道你需要它,否则避免使用 MSSQL 时间戳。问:您使用的是 MS Sql Server 吗?或者您使用的是不同的数据库(例如 DB2 或 MySQL)?