我有一个程序,允许用户添加一个带有日期,锦标赛名称和位置的活动。每当保存用户输入的日期时,都会有一个我不想要的时间部分。我怎么摆脱它?原始表是在oracle中,我正在使用Spring框架。
JSP页面(只是输入代码)
<td style="border:0px;">
<select name="month" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Month</option>
<option value="01">January</option><option value="02">February</option><option value="03">March</option>
<option value="04">April</option><option value="05">May</option><option value="06">June</option>
<option value="07">July</option><option value="08">August</option><option value="09">September</option>
<option value="10">October</option><option value="11">November</option><option value="12">December</option>
</select>
<select name="day" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Day</option>
<option value="01">1</option><option value="02">2</option><option value="03">3</option><option value="04">4</option>
<option value="05">5</option><option value="06">6</option><option value="07">7</option><option value="08">8</option>
<option value="09">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
<option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option>
<option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option>
<option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option>
<option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option>
<option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select>
<select name="year" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Year</option>
<option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option>
<option value="2018">2018</option><option value="2019">2019</option><option value="2020">2020</option>
</select>
</td>
<td style="border:0px;">
<input id="upcomingTournament" align="middle" name="upcomingTournament" style="padding: 5px 0px 5px 0px; width:500px; height:28px; font-family:Arial; font-size:18px;" type="text"></input>
</td>
<td style="border:0px;">
<input id="upcomingLocation" align="middle" name="upcomingLocation" style="padding: 5px 0px 5px 0px; width:300px; height:28px; font-family:Arial; font-size:18px;" type="text"></input></th>
</td>
控制器Java文件
@RequestMapping(value = "/NewMatch.do", method = RequestMethod.POST)
public String newMatch(@ModelAttribute("matchForm") MatchesVO searchVO, ModelMap model, HttpServletRequest request) throws Exception {
String date = request.getParameter("year")+"-"+request.getParameter("month")+"-"+request.getParameter("day");
searchVO.setUpcomingDate(date);
if(searchVO.getUpcomingDate()!=null&&searchVO.getUpcomingTournament()!=null&&searchVO.getUpcomingLocation()!=null) {
sampleService.newUpcomingMatch(searchVO);
return "forward:/Matches.do";
}
else {
return "sample/NewMatch";
}
}
SQL XML文件
<insert id="leagueDAO.newUpcomingMatch">
<![CDATA[
INSERT INTO UPCOMINGEVENTS
( UPCOMINGDATE
, UPCOMINGTOURNAMENT
, UPCOMINGLOCATION )
VALUES ( #upcomingDate#
, #upcomingTournament#
, #upcomingLocation# )
]]>
</insert>
答案 0 :(得分:0)
您需要选择正确的DateFormat以将Date打印为字符串。例如。 'YYYY-MM-DD'
答案 1 :(得分:0)
DateUtils
提供truncate
函数,使用如下:
DateUtils.truncate(yourDate, Calendar.DATE);
您还可以创建Calendar
,设置不需要的字段(小时,分钟等)并转换回日期:
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date truncated = cal.getTime();
正如评论中已经说明的那样,如果你不需要存储截断日期(没有单一性约束等),你也可以只存储一个有时间的日期,并在你需要显示它时对其进行格式化(参见{{ 3}})。
答案 2 :(得分:0)
您可以更改SQL XML文件中的insert语句,以在插入期间截断日期:
<insert id="leagueDAO.newUpcomingMatch">
<![CDATA[
INSERT INTO UPCOMINGEVENTS
( UPCOMINGDATE
, UPCOMINGTOURNAMENT
, UPCOMINGLOCATION )
VALUES ( TRUNC( #upcomingDate# )
, #upcomingTournament#
, #upcomingLocation# )
]]>
</insert>