我目前有此查询的日期范围设置为2月24日。不幸的是,我的结果有来自各地的日期。
为什么会发生这种情况的方向?
P.S。 " TIMESTAMP"是我的专栏名称(我无法改变这一点)。
SELECT
DATE(TIMESTAMP) as dateofEvent,
eventType,
parameters.name,
parameters.value,
membershipStatus,
gender,
COUNT(*)
FROM (
SELECT
*
FROM
TABLE_DATE_RANGE(myFirstTable, TIMESTAMP('2016-02-24 00:00:00'), TIMESTAMP('2016-02-24 23:59:59'))) AS EV
JOIN
mySecondTable AS UD
ON
UD.userId = EV.userId
WHERE
eventType = 'SettingUpdated'
and (UPPER(parameters.value) = 'TRUE' or UPPER(parameters.value) = 'FALSE')
GROUP BY
dateofEvent,
eventType,
gender,
parameters.value,
parameters.name,
membershipStatus
答案 0 :(得分:1)
TABLE_DATE_RANGE
过滤表名,它对字段值没有任何作用。
因此,如果您只想获取特定时间范围内的字段,则必须确保字段值与表名相对应。在特定情况下,您需要确保仅在“2016-02-24 00:00:00”之间添加TIMESTAMP
字段的行。和' 2016-02-24 23:59:59'到表myFirstTable.20160224。您可能违反此规定,表myFirstTable.20160224包含TIMESTAMP
个字段。
答案 1 :(得分:1)
使用以下查询时
SELECT *
FROM TABLE_DATE_RANGE(myFirstTable,
TIMESTAMP('2016-02-24 00:00:00'),
TIMESTAMP('2016-02-24 23:59:59'))) AS EV
FROM语句正在“翻译”,您的查询就像下面一样执行(请参阅Table wildcard functions中的更多内容)
SELECT *
FROM myFirstTable20160224
所以,现在你在这个地方得到日期的事实告诉我你的时间戳字段不仅限于2016-02-24,而是尽管表格名称已经遍布整个地方
如果您需要按日期过滤输出,可以添加类似
的内容WHERE DATE(timestamp) = '2016-02-24'