SQl中不接受日期格式

时间:2015-02-20 06:37:46

标签: java mysql date datetime date-format

我有像这样的查询

查询:

SELECT * FROM attendance_entry WHERE absent_date="Fri Feb 20 00:00:00 IST 2015";

在Mysql中,absent_date采用这些格式(yyyy-mm-dd)。

当我使用Hiberante Criteria时,它接受了。如何编写查询?

3 个答案:

答案 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';

C_ID

C_TS

     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');