2

我有java longdate对象转换的日期对象的长值,现在我想在SQL查询中使用该长值与日期进行比较。

我想将 long 值转换为SQL日期对象,因为我想按日期过滤器获取数据

我试过了

"select DATEADD(SECOND, 1376773200000/1000 ,'1970/1/1')"

但它不会工作。

这个怎么做?

4

2 回答 2

3

我建议您改用参数化 SQL,这将允许您将值指定为 a java.sql.Date。例如:

String sql = "SELECT * FROM Foo WHERE CreatedDate > ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setDate(1, new java.sql.Date(timestampValue));

(或使用java.sql.Timestamp- 这取决于您的字段的确切类型。)

于 2013-09-14T13:10:03.080 回答
0

一篇好文章是如何将小时、分钟、秒添加到 dateadd sql?

在 oracle 中,您可以这样做:

declare
 vdate      date;
 vseconds number;
begin
  vseconds := 5;
  vdate      := to_date('2.1.2010 05:00','dd.mm.yyyy hh24:mi');
  vdate := vdate + vseconds/24/60/60;
end;

这相当于select to_date('2.1.2010 05:00','dd.mm.yyyy hh24:mi') + 5/24/60/60 from dual;

另一个例子在这里http://www.codeproject.com/Articles/566542/Date-and-Time-Data-Types-and-Functions-SQL-Server#27

SELECT DATEADD(second, 1, @date) AS 'Second' ; @date is a variable.

将 long 转换为 date:

如果长日期是 1220227200L ,那么日期是

Date d = new Date(1220227200L * 1000);

输出

Sun Aug 31 20:00:00 GMT-04:00 2008
于 2013-09-14T13:24:04.887 回答