简体   繁体   English

数据库中的日期格式为yyyy / MM / dd,我希望它来自MM / dd / yyyy

[英]Date format in Database is in yyyy/MM/dd i want it in the from MM/dd/yyyy

Hello in my web application i ve used SimpleDateFormat to convert string to date and in the format MM/dd/yyyy but when the form fields get inserted in the database its in the format yyyy/MM/dd. 您好,在我的Web应用程序中,我已经使用SimpleDateFormat将字符串转换为日期,格式为MM / dd / yyyy,但是当表单字段以yyyy / MM / dd格式插入数据库时​​。

Below is my servlet 以下是我的servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Affiliate af= new Affiliate();

    af.setFisrtName(request.getParameter("txtFname"));
    af.setLastName(request.getParameter("txtLname"));
    af.setGender(request.getParameter("txtGender"));
    af.setCategory(request.getParameter("txtCategory"));
    String dob=(request.getParameter("txtDob"));
    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");  
    Date date;
    try {
        date = (Date)formatter.parse(dob);
        af.setDate(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    af.setAge(Integer.parseInt(request.getParameter("txtAge")));
    af.setAddress(request.getParameter("txtAddr"));
    af.setCountry("India");
    af.setState(request.getParameter("txtState"));
    af.setCity(request.getParameter("txtCity"));
    af.setPinCode(Integer.parseInt(request.getParameter("txtPin")));
    af.setEmailId(request.getParameter("txtEmail"));
    af.setStd(Integer.parseInt(request.getParameter("txtStd")));
    af.setContactNo(Integer.parseInt(request.getParameter("txtPhone")));
    af.setMobileNo(Long.parseLong(request.getParameter("txtMobile"),10));

AffiliateService afs=new AffiliateService();
**afs.createAffiliate(af);**
}

Below is my DAO: 以下是我的DAO:

public void insertAffiliate(Affiliate affiliate){
    String sql="INSERT INTO REGISTER " +"(id,FisrtName,LastName,Gender,Category,DateOfBirth,Age,Address,Country,State,City,PinCode,EmailId,Std,ContactNo,MobileNo)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    Connection conn = null;

    try {
        **conn = dataSource.createConnection();**
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1, affiliate.getId());
        ps.setString(2, affiliate.getFisrtName());
        ps.setString(3, affiliate.getLastName());
        ps.setString(4,affiliate.getGender());
        ps.setString(5, affiliate.getCategory());
        ps.setDate(6, new java.sql.Date(affiliate.getDate().getTime()));
        ps.setInt(7, affiliate.getAge());
        ps.setString(8, affiliate.getAddress());
        ps.setString(9,affiliate.getCountry());
        ps.setString(10,affiliate.getState());
        ps.setString(11, affiliate.getCity());
        ps.setInt(12, affiliate.getPinCode());
        ps.setString(13, affiliate.getEmailId());
        ps.setInt(14,affiliate.getStd());
        ps.setInt(15, affiliate.getContactNo());
        ps.setLong(16, affiliate.getMobileNo());

        ps.executeUpdate();
        ps.close();

    } catch (SQLException e) {
        throw new RuntimeException(e);

    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {}
        }
    }
}

And below is my DTO: 以下是我的DTO:

public class Affiliate {

@NotNull
    @Past
    Date date;

public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }

If you're storing it as a Date then its DB dependent. 如果将其存储为日期,则取决于数据库。 If you're storing it as a String, then you can format it using SimpleDateFormat in the format you want and then store it 如果您将其存储为字符串,则可以使用SimpleDateFormat以所需的格式对其进行格式化,然后将其存储

Year-month-day is the standard format for dates in databases. 年月日是数据库中日期的标准格式。 The date column does not store the format of course, it stores the date and any formatting is applied by client software. 日期列不存储课程的格式,它存储日期,并且任何格式均由客户端软件应用。 Some database clients (Oracle) permit defining a custom date format, but not MySQL. 某些数据库客户端(Oracle)允许定义自定义日期格式,但MySQL不允许。

You can always format the date in your client application when it gets the results from the database. 当客户端应用程序从数据库获取结果时,您始终可以格式化日期。

SimpleDateFormat myFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = resultSet.getDate(column);
String dateString = myFormat.format(date);

You can also apply formatting function in the database, with the DATE_FORMAT function. 您还可以使用DATE_FORMAT函数在数据库中应用格式化功能。

You can't change mysql default date format. 您不能更改mysql默认日期格式。

You can still use DATE_FORMAT in your select. 您仍然可以选择使用DATE_FORMAT。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM