从数据库中选择时间戳记时,WSO2 DSS问题

编程入门 行业动态 更新时间:2024-10-26 14:27:12
本文介绍了从数据库中选择时间戳记时,WSO2 DSS问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在定义查询以从WSO2 DSS中的Cassandra中获取一些数据时遇到了问题.查询(和操作)本身正在工作,但是我的问题是当我尝试获取时间戳记时.我只得到缺少时间部分的日期和时区(2017-01-11 + 0100).我猜想这与到无法正常工作的dateTime xsdType的映射有关.您是否已经遇到过这个问题,并且您有解决方案来获取时间戳吗?

I've an issue defining a query to get some data out of Cassandra in WSO2 DSS. The query (and the operation) itself is working but my problem is when I try to get a timestamp as a result. I only get the date and the timezone (2017-01-11+0100) the time part is missing. I guess that this is somehow related on the mapping to dateTime xsdType that is not working correctly. Did you already face this issue, and do you have a solution to get the timestamp?

这是一个查询示例

<query id="getDataQuery" useConfig="CassandraDB"> <expression>SELECT ts,value FROM keyspace.ts_tp WHERE name = :name</expression> <result element="result" rowName="data"> <element column="ts" name="ts" xsdType="dateTime"/> <element column="value" name="value" xsdType="decimal"/> </result> <param name="name" paramType="SCALAR" sqlType="STRING"/> </query>

谢谢

推荐答案

似乎是dss dateTime映射中的一个问题,我打开了吉拉票@ wso2 可以肯定.为了使我的电话返回正确的值,我进行了以下操作(警告痛苦的解决方案:))

Seems to be an issue in dss dateTime mapping, I opened a Jira ticket @wso2 to be sure. In order to make my call return the right values I made the following (Warning painful solution :))

查询现在返回以ms为单位的unix时间戳

The query returns now the unix Timestamp in ms

<query id="getDataQuery" useConfig="CassandraDB"> <expression>SELECT unixTimestampOf(minTimeuuid(ts)) as dt,value FROM keyspace.ts_tp WHERE source = :source and name = :name and bucket = :bucket and ts &gt;= :tsFrom and ts &lt;= :tsTo</expression> <result element="result" rowName="data"> <element column="dt" name="ts" xsdType="int"/> <element column="value" name="value" xsdType="decimal"/> </result> <param name="source" paramType="SCALAR" sqlType="STRING"/> <param name="name" paramType="SCALAR" sqlType="STRING"/> <param name="bucket" paramType="SCALAR" sqlType="INTEGER"/> <param name="tsFrom" paramType="SCALAR" sqlType="TIMESTAMP"/> <param name="tsTo" paramType="SCALAR" sqlType="TIMESTAMP"/> </query>

得到结果后,我将应用XSL转换来计算日期

Once I get the result I apply an XSL transformation to compute the dates

<xsl:stylesheet exclude-result-prefixes="xsl soapenv" version="2.0" xmlns:xs="www.w3/2001/XMLSchema" xmlns:soapenv="www.w3/2003/05/soap-envelope" xmlns:xsl="www.w3/1999/XSL/Transform"> <xsl:output encoding="utf-8" indent="yes" method="xml" omit-xml-declaration="yes"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="dt"> <xsl:element name="ts"> <xsl:value-of select='xs:dateTime("1970-01-01T00:00:00") + . * xs:dayTimeDuration("PT0.001S")'/> </xsl:element> </xsl:template> </xsl:stylesheet>

它需要在不同的时区进行测试,并且可以节省日光,但是它似乎是一种有效的工具,正在等待正式的修复.

It needs to be tested with different time zones, and day light savings but it seems to be a working hack, waiting for the official fix.

更多推荐

从数据库中选择时间戳记时,WSO2 DSS问题

本文发布于:2023-10-17 06:14:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1500007.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:戳记   数据库中   时间   DSS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!