H2 数据库。如何在sql中将日期转换为秒?

Posted

技术标签:

【中文标题】H2 数据库。如何在sql中将日期转换为秒?【英文标题】:H2 database. How to convert date to seconds in sql? 【发布时间】:2009-10-18 09:53:13 【问题描述】:

mysql 的 time_to_sec() 有模拟吗?

我注意在 H2 数据库上执行如下查询:

select * from order
join timmingSettings on order.timmingSettings = timmingSettings.id
where (order.time-timmingSettings.timeout) < current_timestamp

【问题讨论】:

【参考方案1】:

没有,但是如果需要的话,向 h2 添加函数似乎很容易。

要将时间戳转换为自纪元以来的秒数,请编译并添加一个 Java 类到 h2 的类路径中,其中包含:

public class TimeFunc

  public static long getSeconds(java.sql.Timestamp ts)
  
    return ts.getTime() / 1000;
  

然后可以使用 CREATE ALIAS 在 h2 中链接 Java 代码中的函数:

CREATE ALIAS TIME_SECS FOR "TimeFunc.getSeconds";

SELECT TIME_SECS(CURRENT_TIMESTAMP);

生产:

TIME_SECS(CURRENT_TIMESTAMP())  
1255862217
(1 row, 0 ms)

【讨论】:

你也可以内联:CREATE ALIAS TIME_SECS AS 'long getSeconds(java.sql.Timestamp ts) return ts.getTime() / 1000; '.【参考方案2】:

代替向 H2 添加函数,您可以将日期转换为 timsestamp,然后根据http://www.h2database.com/html/functions.html 使用 formatdatetime。或者,转换为字符串并使用 parsedatetime。两者的例子如下:

-- to convert using parsedatetime, done_on stores 
select parsedatetime(done_on, 'ssss', 'en', 'Europe/Dublin');
-- for this example, assume done_on stores a timestamp
-- to convert using formatdatetime
select formatdatetime(done_on, 'ssss', 'en', 'Europe/Dublin');

可以在您的 /usr/share/zoneinfo 目录中找到有效的时区,语言代码位于 http://en.wikipedia.org/wiki/ISO_639-1 的列表中——ISO 639 第 1 部分标准。

【讨论】:

【参考方案3】:

我认为这是最简单的代码。

select DATEDIFF('second',timestamp '1970-01-01 00:00:00' ,  CURRENT_TIMESTAMP())

【讨论】:

【参考方案4】:
SELECT EXTRACT (EPOCH FROM <value>)

所以

从订单中选择 * 在 order.timmingSettings = timmingSettings.id 上加入 timmingSettings where (extract(epoch from order.time)-extract(epoch from timmingSettings.timeout))

【讨论】:

以上是关于H2 数据库。如何在sql中将日期转换为秒?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较日期和时间并获取差异,然后在 Javascript 中将其设置为秒

如何在EXCEL中将字符转成日期 如19970828转成1997-08-28

sql如何将字符串转为日期

VBA 如何将一列字符转成日期

如何在Oracle中将时间戳转化为日期格式

如何在sql中将数字转换为日期