我需要检索所有storeId dateOpened> =特定日期前12个月(例如2017年4月10日)。什么SQL语句可以做到这一点? dateOpened字段是时间戳格式。我们正在使用Google的BigQuery Legacy SQL。
答案 0 :(得分:1)
我们正在使用Google的BigQuery Legacy SQL。
对于BigQuery Legacy SQL,您可以使用如下
#legacySQL
SELECT storeId FROM
WHERE dateOpened
BETWEEN DATE_ADD(TIMESTAMP('2017-10-04'), -12, 'MONTH')
AND TIMESTAMP('2017-10-04')
您可以使用以下"模板"进行测试/播放。使用虚拟数据
#legacySQL
SELECT storeId FROM
(SELECT 1 AS storeId, CURRENT_TIMESTAMP() AS dateOpened),
(SELECT 2 AS storeId, TIMESTAMP('2017-02-10') AS dateOpened),
(SELECT 3 AS storeId, TIMESTAMP('2017-03-10') AS dateOpened),
(SELECT 4 AS storeId, TIMESTAMP('2016-03-10') AS dateOpened)
WHERE dateOpened
BETWEEN DATE_ADD(TIMESTAMP('2017-10-04'), -12, 'MONTH')
AND TIMESTAMP('2017-10-04')
您可能已经注意到 - 到目前为止您获得的答案都是针对BigQuery Standard SQL的
BigQuery Team强烈建议使用标准SQL - 如果您决定关注 - 请参阅Migrating to Standard SQL
答案 1 :(得分:0)
在标准SQL中,您可以使用日期执行此操作(我没有看到时间组件对此类查询重要的任何原因):
public double LoanCalc()
答案 2 :(得分:0)
这可能对您有用:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
tf.reset_default_graph()
sess = tf.Session() # Create new session
sess.run(tf.global_variables_initializer())
其中#standardSQL
WITH data AS(
SELECT 1 storeId, TIMESTAMP("2017-08-31") dateOpened UNION ALL
SELECT 2, TIMESTAMP("2017-07-31") UNION ALL
SELECT 3, TIMESTAMP("2017-05-31") UNION ALL
SELECT 4, TIMESTAMP("2017-03-31") UNION ALL
SELECT 5, TIMESTAMP("2017-01-31") UNION ALL
SELECT 6, TIMESTAMP("2016-12-31") UNION ALL
SELECT 7, TIMESTAMP("2016-09-30") UNION ALL
SELECT 8, TIMESTAMP("2016-05-31") UNION ALL
SELECT 9, TIMESTAMP("2016-02-28")
)
SELECT
storeId
FROM data
WHERE DATE(dateOpened) BETWEEN DATE_SUB(DATE("2017-08-01"), INTERVAL 12 MONTH) AND DATE("2017-08-01")
是您在过滤中用作参考的输入字符串。