将日期字段更新到数据库时遇到困难。 DB中的字段类型是日期/时间。
现在,我正在尝试更新字段名称“R_Date”。
目前,我在我的jsp中使用SQL Expression“
UPDATE request SET request_date ='"+Request_Date+"'";
,但它不接受。
在select语句中我使用的是普通选择,我尝试使用to_char或to_date,但它不接受“DD-MMM-YYYY”的格式
那么,您可以帮助我以“DD-MMM-YYYY”的格式在日期字段中检索/更新/插入日期字段吗?
答案 0 :(得分:2)
在DB中存储时间戳的常规做法(因此,Java端为java.util.Date
,JDBC端为java.sql.Timestamp
)是使用PreparedStatement#setTimestamp()
。
Date requestDate = getItSomehow();
Timestamp timestamp = new Timestamp(requestDate.getTime());
preparedStatement = connection.prepareStatement("UPDATE request SET request_date = ?");
preparedStatement.setTimestamp(1, timestamp);
从数据库获取时间戳的常规做法是使用ResultSet#getTimestamp()
。
Timestamp timestamp = resultSet.getTimestamp("request_date");
Date requestDate = timestamp; // You can just upcast.
要在java.util.Date
和java.lang.String
之间进行转换,您通常会使用SimpleDateFormat
:
// Convert from String to Date.
String requestDateAsString = "09-Aug-2010";
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
Date requestDate = sdf.parse(requestDateAsString);
// Convert from Date to String.
String anotherDateAsString = sdf.format(someDate);
答案 1 :(得分:1)
我认为你应该使用MON代替MMM。
你有没有试过像:
UPDATE request
SET request_date = to_date('" + Request_Date + "', 'DD-MON-YYYY')
希望你意识到,当你的陈述成立时(如果它有效),它会更新请求表中的每一行(不确定这是否是你的意图,但我认为我会指出它。)
答案 2 :(得分:0)
您需要检查要插入的日期格式,并尝试使用适当格式的to_date方法。
以下内容来自:http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html
Oracle DATE的默认格式是“DD-MON-YY”。 如果要以特定格式检索日期,则需要使用:
TO_CHAR(<date>, '<format>')
同样,如果你需要插入/更新日期而不是标准格式的日期输入,你需要使用:
TO_DATE(<string>, '<format>')
其中<format>
字符串可以由40多个选项组成。一些比较流行的包括:
MM Numeric month (e.g., 07)
MON Abbreviated month name (e.g., JUL)
MONTH Full month name (e.g., JULY)
DD Day of month (e.g., 24)
DY Abbreviated name of day (e.g., FRI)
YYYY 4-digit year (e.g., 1998)
YY Last 2 digits of the year (e.g., 98)
RR Like YY, but the two digits are ``rounded'' to a year in the range 1950 to 2049. Thus, 06 is considered 2006 instead of 1906
AM (or PM) Meridian indicator
HH Hour of day (1-12)
HH24 Hour of day (0-23)
MI Minute (0-59)
SS Second (0-59)