【问题标题】:How to change sql date format in java [duplicate]如何在java中更改sql日期格式[重复]
【发布时间】:2016-05-10 16:54:37
【问题描述】:

我正在使用 JDBC 连接和 Java Swing UI,并且在那里我使用了 SqLite DB。
这里我有一个 java 组件,它是 jCalender 来获取日期,我将日期选择为字符串。


首先我将字符串转换为 java.util 日期,然后我将 java.util.date 转换为 java.sql.date,但我的日期字符串格式是 "dd/MM/YYYY" &

然后
DateFormat 格式 = new SimpleDateFormat("dd/MM/YYYY", Locale.ENGLISH);

我设置了上面写的特定日期格式。但是当我在日期之间搜索记录时仍然存在问题。

这里我附上了一份代码,请帮助我,这非常重要。



    String from_date = ((JTextField) txt_bilty_date_start.getDateEditor().getUiComponent()).getText();
    String to_date = ((JTextField) txt_bilty_date_end.getDateEditor().getUiComponent()).getText();

    DateFormat format = new SimpleDateFormat("dd/MM/YYYY", Locale.ENGLISH);
    Date date1 = format.parse(from_date);
    Date date2= format.parse(to_date);

    java.sql.Date sqlDate1 = new java.sql.Date(date1.getTime());
    java.sql.Date sqlDate2 = new java.sql.Date(date2.getTime());

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/YYYY");

    System.out.println("\t\tafter change date");
    System.out.println(sdf.format(sqlDate1));
    System.out.println(sdf.format(sqlDate2));

    String sql = "select * from employee where record_date BETWEEN '"+sdf.format(sqlDate1)+"' AND '"+sdf.format(sqlDate2)+"' ";

    pst=conn.prepareStatement(sql2);
    rs = pst.executeQuery();
    tbl_employee.setModel(DbUtils.resultSetToTableModel(rs));

【问题讨论】:

  • "but there still problem when I search record between date." -- 你需要详细说明这一点。
  • 如果我上面的评论不完全清楚,这意味着您需要更详细地描述您可能会看到的问题,包括发布任何和所有错误或异常消息和/或详细描述您可能遇到的任何和所有不当行为。
  • 本质上,你不在乎,java.util/sql.Date 只是一个容器类,用于表示自 unix 纪元以来的毫秒数,它没有“格式”。只需使用PreparedStatement 并将Date 对象直接绑定到查询,让驱动程序处理它

标签: java swing sqlite jdbc jcalendar


【解决方案1】:

假设您的 record_date 是数据库中的 SQL 日期(而不是一些 varchar),请使用正确的 PreparedStatement 尝试这样的操作。

String sql = "select * from employee where record_date BETWEEN ? AND ?";
pst=conn.prepareStatement(sql2);
pst.setDate(1, sqlDate1);
pst.setDate(2, sqlDate2);
rs = pst.executeQuery();

请注意,使用 Java 7 中引入的try-with-resource,整个 try / catch / check for closed in finally 变得更加容易。

如果您的日期是一个 varchar,您将需要颠倒您的字段顺序以将最重要的字段放在前面 - 以某种方式 yyyy MM dd。只有这样,String/VARCHAR 的结果才会像在字符串的字符串表示上一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-06-05
    • 2011-12-23
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多