gpt4 book ai didi

mysql - 如何使用mysql在g​​roovy中存储持续时间

转载 作者:行者123 更新时间:2023-11-29 12:43:04 24 4
gpt4 key购买 nike

设置一个应用程序,使用 groovy 对调用日志进行一些报告。我想使用mysql作为后台并将数据上传到外部数据库(即每天午夜运行的脚本,加载今天的调用)我已经在 mysql 和 groovy 之间建立了连接(在某种程度上)工作,它清楚地验证了数据库,即使我无法在其中提取或存储任何数据。

但是,外部日志中的值之一是持续时间,通常格式为“00:05:42”(%H:%m:%s),但是,我在如何存储方面遇到了一些问题它以 groovy 满意的方式在 mysql 中。首先尝试了日期,但这给我带来了一个问题,即它需要日历日期作为其中的一部分。然后我开始尝试使用 grovy.time.* 中的 TimeDuration,但这似乎将东西存储为一个tinyblob。那么,是否有一个可以在 mysql 和 groovy 中工作的 Time 版本(尝试了许多不同的版本,虽然 mysql 似乎很高兴,但 groovy 似乎不太知道该怎么办。

目前的域名如下所示:

import groovy.time.*
import java.sql.Time
import java.sql.Timestamp



class Calls {
Time CallTime
TimeDuration Length
int Line
String SourceNr
String Direction
String DialNr
String Phone
String User
static constraints = {
}
static mapping = {
version false
}
// id generator: 'hilo',
// params: [table: 'hi_value', column: 'next_value', max_lo: 100]
//id composite: ['DateTime', 'SourceNr','DialNr']

}

最佳答案

如果您找不到可以解析您描述的格式并且正确存储在 MySQL 中的持续时间类型,我建议使用一个以秒为单位的简单长值,并在 getter 和 setter 中进行与字符串的转换。

(这只是一些快速代码,在使用之前对边界情况进行一些适当的测试,也许还需要一些输入验证。)

class Calls {
long length

/** Parse a string with format hhh:mm:ss into a value in seconds. */
public void setLength(String s) {
length = s.split(':').collect(Integer.&parseInt).inject {
a, b -> a * 60 + b
}
}

/** Format a number in seconds into a hhh:mm:ss string. */
public String getLength() {
def a = [length]
for (i in [1, 2]) {
a << (long)(a[-1] / 60)
a[-2] %= 60
}
String.format("%02d:%02d:%02d", *a.reverse())
}
}

关于mysql - 如何使用mysql在g​​roovy中存储持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com