Dav*_*rth 5 sql t-sql google-bigquery
我正在尝试选择时间戳字段recdate的行,其日期值最大并包含该月的最后一个完成日期.例如,由于这是2016年7月,我希望所有行的日期值都达到并包含31-06-2016.这曾经在T-SQL中运行良好,我使用以下内容并将其分配给@today并在我的WHERE中查看:
DECLARE @today DATETIME SELECT @today = CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())-0,0)));
Run Code Online (Sandbox Code Playgroud)
我在BigQuery中苦苦挣扎,我无法让DATEDIFF或GETDATE工作,想知道是否有人对此有所想法?
最好的祝愿
戴夫
Ser*_*rgi 20
标准 SQL 的另一种方式。
本月第一天:
SELECT DATE_TRUNC(CURRENT_DATE(), MONTH)
Run Code Online (Sandbox Code Playgroud)
上个月的最后一天(当前的第一天减 1):
SELECT DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
下个月第一天:
SELECT DATE_TRUNC(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH)
Run Code Online (Sandbox Code Playgroud)
本月的最后一天(下个月的第一天减 1):
SELECT DATE_SUB(DATE_TRUNC(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
以下以此为例
#standardSQL
select
date_trunc(current_date(), month) - 1,
last_day(date_sub(current_date(), interval 1 month)),
date_sub(last_day(current_date()), interval 1 month)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,六月有30天:o) - 除了普里斯特利的"六月三十一"