数据工厂Postgres查询日期时间错误
Data factory Postgres query date time error
我有一个 postgressql 查询。我在数据库查询中尝试过,它似乎工作正常。但是在数据块中它没有按预期工作。
我必须使用 where 子句。我从时间戳中提取日期并将其与传递的值(日期时间格式)进行比较的地方。我正在提取日期并检查它是否小于时间戳中的日期。
请检查 WHERE 子句。
select DATE(to_timestamp(time,'YYYY-MM-DD %H24:%m:%s' )) as modifiedtime, *
FROM testg
WHERE DATE(to_timestamp(time,'YYYY-MM-DD %H24:%m:%s' )) >= DATE(to_timestamp('2020-10-25 00:00:00','YYYY-MM-DD %H24:%m:%s' )) - INTERVAL '7 DAY'
order by time asc
在数据工厂中,查询如下所示:
@concat('select * FROM streamingData WHERE property_name = ''', item(), '''' ,' AND DATE(to_timestamp(''', activity('Lookup1').output.firstRow.max_timestamp, '''',',''','YYYY-MM-DD %H24:%m:%s', ''' ))' ,' >= ''', 'DATE(to_timestamp(''', pipeline().parameters.enddate, '''',',''','YYYY-MM-DD %H24:%m:%s', ''' ))' )
数据:
时间:
"2020-10-25 13:00:22.000000+01"
"2020-10-24 14:00:22.000000+01"
"2020-10-25 12:00:22.000000+01"
"2020-10-26 01:00:22.000000+01"
我正在使用 trigger()。outputs.windowEndTime() -
输出为:2020-10-20 01:00:22
我正在比较两个日期值,即
如果 2020-10-26 >= 2020-10-20
即使在过滤之后,我也得到了所有数据,即 2019 年等日期。
我错过了什么
奇怪的是,我尝试使用 Between 进行比较(这不起作用),即使在过滤之后我仍然得到所有年份。
使用的方法:
- 在子句之间使用 - 无效
- 使用过的 <= 和 >= - 也没有用。
我用了后来的“SYMMETRIC”函数。 with between - 过滤器在其中工作。我想在 BETWEEN SYMMETRIC 中,参数会自动交换,并且总是暗示一个非空范围。
最后查询如下:
@concat('select * FROM streamingData WHERE property_name = ''', item(), '''' ,' AND time BETWEEN SYMMETRIC to_timestamp(''', activity('LKP_RMS_ValueStream_Time').output.firstRow.max_timestamp, '''',',''','YYYY-MM-DD', ''' )' ,' AND ', 'to_timestamp(''', pipeline().parameters.enddate, '''',',''','YYYY-MM-DD', ''' )' , ' - ', 'INTERVAL ''', '7 DAY', '''' )
感谢您的宝贵时间和帮助。
我有一个 postgressql 查询。我在数据库查询中尝试过,它似乎工作正常。但是在数据块中它没有按预期工作。
我必须使用 where 子句。我从时间戳中提取日期并将其与传递的值(日期时间格式)进行比较的地方。我正在提取日期并检查它是否小于时间戳中的日期。 请检查 WHERE 子句。
select DATE(to_timestamp(time,'YYYY-MM-DD %H24:%m:%s' )) as modifiedtime, *
FROM testg
WHERE DATE(to_timestamp(time,'YYYY-MM-DD %H24:%m:%s' )) >= DATE(to_timestamp('2020-10-25 00:00:00','YYYY-MM-DD %H24:%m:%s' )) - INTERVAL '7 DAY'
order by time asc
在数据工厂中,查询如下所示:
@concat('select * FROM streamingData WHERE property_name = ''', item(), '''' ,' AND DATE(to_timestamp(''', activity('Lookup1').output.firstRow.max_timestamp, '''',',''','YYYY-MM-DD %H24:%m:%s', ''' ))' ,' >= ''', 'DATE(to_timestamp(''', pipeline().parameters.enddate, '''',',''','YYYY-MM-DD %H24:%m:%s', ''' ))' )
数据:
时间:
"2020-10-25 13:00:22.000000+01"
"2020-10-24 14:00:22.000000+01"
"2020-10-25 12:00:22.000000+01"
"2020-10-26 01:00:22.000000+01"
我正在使用 trigger()。outputs.windowEndTime() - 输出为:2020-10-20 01:00:22
我正在比较两个日期值,即 如果 2020-10-26 >= 2020-10-20
即使在过滤之后,我也得到了所有数据,即 2019 年等日期。
我错过了什么
奇怪的是,我尝试使用 Between 进行比较(这不起作用),即使在过滤之后我仍然得到所有年份。
使用的方法:
- 在子句之间使用 - 无效
- 使用过的 <= 和 >= - 也没有用。
我用了后来的“SYMMETRIC”函数。 with between - 过滤器在其中工作。我想在 BETWEEN SYMMETRIC 中,参数会自动交换,并且总是暗示一个非空范围。
最后查询如下:
@concat('select * FROM streamingData WHERE property_name = ''', item(), '''' ,' AND time BETWEEN SYMMETRIC to_timestamp(''', activity('LKP_RMS_ValueStream_Time').output.firstRow.max_timestamp, '''',',''','YYYY-MM-DD', ''' )' ,' AND ', 'to_timestamp(''', pipeline().parameters.enddate, '''',',''','YYYY-MM-DD', ''' )' , ' - ', 'INTERVAL ''', '7 DAY', '''' )
感谢您的宝贵时间和帮助。