不知道你的版本是什么,
在1.9中, 申明为TIMESTAMP类型的属性,需要是 格式化为YYYY-MM-DD'T'HH:mm:ss.SSS'Z'
不过你可以从外部传入13位时间戳,也可以转换成TIMESTAMP, 比如DDL中定义
CREATE TABLE `t` (
ctm TIMESTAMP,
) WITH (
'format.schema' = 'ROW<ctm LONG>'
)"
。如果数据源也要定义为TIMESTAMP类型,则通过下面方式去定义外部数据源格式:
DateTimeFormatter t = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.appendLiteral('T')
.append(new DateTimeFormatterBuilder()
.appendPattern("HH:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true)
.appendPattern("'Z'")
.toFormatter())
.toFormatter();
用这个结构去格式化时间类型
Zhenghua Gao <
[hidden email]> 于2019年12月16日周一 下午7:42写道:
> 1) ML里直接发截图无法展示,可以用第三方图床,然后链接过来。
> 2) 请确认 time1/time2 类型是否是 TIMESTAMP
> 3) 文档中的 TIMESTAMP '2003-01-02 10:00:00' 代表标准SQL的时间常量(timestamp literal),你的
> TIMESTAMP time1 无法被视作时间常量。
>
> *Best Regards,*
> *Zhenghua Gao*
>
>
> On Mon, Dec 16, 2019 at 3:51 PM 1530130567 <
[hidden email]> wrote:
>
> > 各位大佬好:
> > 由于业务处理逻辑需要计算两个日期的时间差,按照惯例打开官网,查看buildin Functions,ctrC, ctrV,跑起来没问题!
> >
> > 然后我就改了一下:
> > TIMESTAMPDIFF(DAY, TIMESTAMP time1,TIMESTAMP time2)
> > SQL validate报错!
> > 然后我又改了一下:
> > TIMESTAMPDIFF(DAY, cast(time1 as timestamp),cast(time2 as timestamp))
> > 通过了!
> >
> > 我有点疑惑,TIMESTAMP是不是只适用于固定的字符串,而不能用列名这种变量?
> >
> >
>