使用 jdbc 向 hsqldb 输入日期
input date using jdbc to hsqldb
如何获取结束日期大于当前日期的所有行?我必须使用 setString() 还是 setDate()?他们都没有工作!
正确的做法是什么?
结果集为空,但数据库包含给定 sql 语句
的数据
public ArrayList<AddBean> listPendingTasks() {
java.util.Date date = new java.util.Date();
String modifiedDate= new SimpleDateFormat("yyyy-MM-dd").format(date);
Connection con = JDBCHelper.getConnection();
PreparedStatement ps_sel = null;
ArrayList<AddBean> c = new ArrayList<AddBean>();
ResultSet rs = null;
try {
ps_sel = con.prepareStatement("select * from tasks where enddate > ? order by enddate");
ps_sel.setString(2, modifiedDate);
ps_sel.execute();
rs = ps_sel.getResultSet();
while(rs.next())
{
AddBean ab = new AddBean();
ab.setTname(rs.getString(2));
ab.setCategory(rs.getString(3));
ab.setStartdate(rs.getString(4));
ab.setEnddate(rs.getString(5));
ab.setDescription(rs.getString(6));
ab.setPriority(rs.getString(7));
c.add(ab);
}
return c;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
试试这个
如果您的 table 有 DATE 类型的列:
Query : SELECT * FROM [values] v WHERE date >= '2013-06-03';
那就用这个方法java.sql.Date.valueOf(java.lang.String)
ps.setDate(2, java.sql.Date.valueOf("2015-09-13"));
更新为 Date and Time Types
:
DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD'
格式检索和显示 DATE 值。支持的范围是 '1000-01-01' to '9999-12-31'
。 MySQL 以 'HH:MM:SS'
格式检索和显示 TIME 值。 TIME 值的范围可能是 '-838:59:59' to '838:59:59'
.
String QUERY = "UPDATE TABLE_NAME SET dateValue=?, timeValue=?, timeStampText=? WHERE rowIdentify=?";
PreparedStatement pstmt = con.prepareStatement( QUERY );
pstmt.setDate(1, java.sql.Date.valueOf( localDate )); // DATE Type
pstmt.setTime(2, java.sql.Time.valueOf( localTime )); // TIME Type
pstmt.setString(3, localDateTime ); // TEXT Type
pstmt.setString(4, conditionValue );
获取上述日期字段值的示例代码。 getDateFromEpochTime()
long startTime=System.currentTimeMillis();
String str = getDateFromEpochTime(startTime);
CharSequence charSequence = str.subSequence(0, str.length());
String pattern = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter dateTimeFormatter = java.time.format.DateTimeFormatter.ofPattern( pattern );
LocalDate localDate = java.time.LocalDate.parse( charSequence, dateTimeFormatter );
LocalTime localTime = java.time.LocalTime.parse( charSequence, dateTimeFormatter );
LocalDateTime localDateTime = LocalDateTime.parse( charSequence, dateTimeFormatter);
Java SQL driver doesnot support java.sql.Timestamp
for DATETIME or TIMESTAMP
type of Table column. Try to use PreparedStatement
when query contains Date and Time Types
types.
了解数据库的日期格式。 hsql 数据库支持 'yyyy-mm-dd'。如果您使用的是准备好的语句,那么您可以将日期输入为字符串或日期。那不会有什么不同。我推荐使用字符串。使用日期对于初学者来说有点复杂,因为它不是实用日期。它的 sql 日期。日期格式有时会很麻烦。
如何获取结束日期大于当前日期的所有行?我必须使用 setString() 还是 setDate()?他们都没有工作! 正确的做法是什么? 结果集为空,但数据库包含给定 sql 语句
的数据public ArrayList<AddBean> listPendingTasks() {
java.util.Date date = new java.util.Date();
String modifiedDate= new SimpleDateFormat("yyyy-MM-dd").format(date);
Connection con = JDBCHelper.getConnection();
PreparedStatement ps_sel = null;
ArrayList<AddBean> c = new ArrayList<AddBean>();
ResultSet rs = null;
try {
ps_sel = con.prepareStatement("select * from tasks where enddate > ? order by enddate");
ps_sel.setString(2, modifiedDate);
ps_sel.execute();
rs = ps_sel.getResultSet();
while(rs.next())
{
AddBean ab = new AddBean();
ab.setTname(rs.getString(2));
ab.setCategory(rs.getString(3));
ab.setStartdate(rs.getString(4));
ab.setEnddate(rs.getString(5));
ab.setDescription(rs.getString(6));
ab.setPriority(rs.getString(7));
c.add(ab);
}
return c;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
试试这个
如果您的 table 有 DATE 类型的列:
Query : SELECT * FROM [values] v WHERE date >= '2013-06-03';
那就用这个方法java.sql.Date.valueOf(java.lang.String)
ps.setDate(2, java.sql.Date.valueOf("2015-09-13"));
更新为 Date and Time Types
:
DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD'
格式检索和显示 DATE 值。支持的范围是 '1000-01-01' to '9999-12-31'
。 MySQL 以 'HH:MM:SS'
格式检索和显示 TIME 值。 TIME 值的范围可能是 '-838:59:59' to '838:59:59'
.
String QUERY = "UPDATE TABLE_NAME SET dateValue=?, timeValue=?, timeStampText=? WHERE rowIdentify=?";
PreparedStatement pstmt = con.prepareStatement( QUERY );
pstmt.setDate(1, java.sql.Date.valueOf( localDate )); // DATE Type
pstmt.setTime(2, java.sql.Time.valueOf( localTime )); // TIME Type
pstmt.setString(3, localDateTime ); // TEXT Type
pstmt.setString(4, conditionValue );
获取上述日期字段值的示例代码。 getDateFromEpochTime()
long startTime=System.currentTimeMillis();
String str = getDateFromEpochTime(startTime);
CharSequence charSequence = str.subSequence(0, str.length());
String pattern = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter dateTimeFormatter = java.time.format.DateTimeFormatter.ofPattern( pattern );
LocalDate localDate = java.time.LocalDate.parse( charSequence, dateTimeFormatter );
LocalTime localTime = java.time.LocalTime.parse( charSequence, dateTimeFormatter );
LocalDateTime localDateTime = LocalDateTime.parse( charSequence, dateTimeFormatter);
Java SQL driver doesnot support
java.sql.Timestamp
forDATETIME or TIMESTAMP
type of Table column. Try to usePreparedStatement
when query containsDate and Time Types
types.
了解数据库的日期格式。 hsql 数据库支持 'yyyy-mm-dd'。如果您使用的是准备好的语句,那么您可以将日期输入为字符串或日期。那不会有什么不同。我推荐使用字符串。使用日期对于初学者来说有点复杂,因为它不是实用日期。它的 sql 日期。日期格式有时会很麻烦。