營銷日期天數計算

2022-05-07 06:09:08 字數 2395 閱讀 9301

';1.將上一行的enddate放置在下一行,並格式化時間(格式化為yyyy-mm-dd

,方便後期求時間差)

select

brand,

from_unixtime(unix_timestamp(startdate,

'yyyymmdd

'),'

yyyy-mm-dd

') startdate,

from_unixtime(unix_timestamp(enddate,

'yyyymmdd

'),'

yyyy-mm-dd

') enddate,

from_unixtime(unix_timestamp(lag(enddate,

1,'19700101

') over(partition by brand order by startdate),'

yyyymmdd

'),'

yyyy-mm-dd

') lagenddate

from

business;t1

2 否則,用上一行結束時間加一天代替當前行的開始日期,同時判斷當前行結束時間跟上一行結束時

間大小,防止出現資料完全包裹的情況。

select

brand,

if(startdate>lagenddate,startdate,date_add(lagenddate,1

)) startdate,

if(enddate>lagenddate,enddate,lagenddate) enddate

from

t1;t2

3.按照品牌計算打折時間

select

brand,

sum(datediff(enddate,startdate)+1

)from

t2group by

brand;

最終sql:

select

brand,

sum(datediff(enddate,startdate)+1

)from

(select

brand,

if(startdate>lagenddate,startdate,date_add(lagenddate,1

)) startdate,

if(enddate>lagenddate,enddate,lagenddate) enddate

from

(select

brand,

from_unixtime(unix_timestamp(startdate,

'yyyymmdd

'),'

yyyy-mm-dd

') startdate,

from_unixtime(unix_timestamp(enddate,

'yyyymmdd

'),'

yyyy-mm-dd

') enddate,

from_unixtime(unix_timestamp(lag(enddate,

1,'19700101

') over(partition by brand order by startdate),'

yyyymmdd

'),'

yyyy-mm-dd

') lagenddate

from

business)t1)t2

group by

brand;

日期類 計算日期到天數轉換

題目描述 根據輸入的日期,計算是這一年的第幾天,輸入某年某月某日,判斷這一天是這一年的第幾天?分析 這道題可以使用日期相減的方式實現,用給定的日期減去這一年的1月1日,就可以計算出是第幾天,但是這樣的話,就要單獨實現乙個日期類的函式,有點複雜,這裡還有另外一種簡單的思路,比如要計算2018年11月1...

計算日期相差天數的BUG

date2比date1多的天數 param date1 param date2 return public static int differentdays date date1,date date2 else 不是閏年 return timedistance day2 day1 else 同一年 ...

計算天數差 常用日期函式

long days mss 60 60 24 long hours 3601 60 60 24 60 60 long minutes 3601 60 60 60 long seconds 3601 60 system.out.println hours t minutes t seconds 1 0...