SQL:如何在特定日期之前12个月开设所有商店

时间:2017-09-04 15:24:52

标签: sql google-bigquery

我需要检索所有storeId dateOpened> =特定日期前12个月(例如2017年4月10日)。什么SQL语句可以做到这一点? dateOpened字段是时间戳格式。我们正在使用Google的BigQuery Legacy SQL。

3 个答案:

答案 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") 是您在过滤中用作参考的输入字符串。