我有像这样的查询
查询:
SELECT * FROM attendance_entry WHERE absent_date="Fri Feb 20 00:00:00 IST 2015";
在Mysql中,absent_date采用这些格式(yyyy-mm-dd)。
当我使用Hiberante Criteria时,它接受了。如何编写查询?
答案 0 :(得分:0)
将java Date
对象格式化为sql
接受格式,然后将其传递给sql查询。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // or "yyyy-MM-dd hh:mm:ss"
Date today = new Date();
System.out.println(today); // Fri Feb 13 14:42:01 IST 2015
String fomattedDate = sdf.format(today);
System.out.println(fomattedDate); // 2015-02-13
// pass fomattedDate to sql
String sql = "SELECT * FROM attendance_entry WHERE absent_date="+fomattedDate";
答案 1 :(得分:0)
你应该知道的第一件事是。
1.您正在使用哪种格式&您在创建表时使用的格式类型是什么。
2.您可以通过类型desc" tablename"
来查看3.您是否使用任何指定区域作为时间戳,区域(即:中国,印度,美国等)。 通过找到你可以做到的。
我只是创建一个带时间戳的表, SQL> ALTER SESSION SET NLS_TIMESTAMP_FORMAT =' DD-MON-YY HH:MI:SSXFF';
会话改变了。
SQL> CREATE TABLE table_ts(c_id NUMBER,c_ts TIMESTAMP);
创建表。
SQL> INSERT INTO table_ts VALUES(1,' 01-JAN-2003 2:00:00');
创建了一行。
SQL> INSERT INTO table_ts VALUES(2,TIMESTAMP' 2003-01-01 4:00:00');
创建了一行。
SQL>提交;
提交完成。
SQL> select * from table_ts where c_ts =' 01-JAN-03 04:00:00.000000';
3
01-JAN-03 04:00:00.000000
答案 2 :(得分:-1)
这完美无缺
SELECT * FROM attendance_entry
WHERE absent_date=STR_TO_DATE('Fri Feb 20 00:00:00 IST 2015','%a %b %d %H:%i:%s IST %Y');