我有java long
从date
对象转换的日期对象的长值,现在我想在SQL
查询中使用该长值与日期进行比较。
我想将 long 值转换为SQL
日期对象,因为我想按日期过滤器获取数据
我试过了
"select DATEADD(SECOND, 1376773200000/1000 ,'1970/1/1')"
但它不会工作。
这个怎么做?
我建议您改用参数化 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
- 这取决于您的字段的确切类型。)
一篇好文章是如何将小时、分钟、秒添加到 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