簡體   English   中英

將YYYYMMDD SQL格式的DATETIME轉換為8位INT

[英]Convert DATETIME to 8 digit INT in format YYYYMMDD SQL

需要聯接兩個表。 一個表具有一個'datekey'列,該列是來自dimdate表的YYYYMMDD格式的int,而另一個表具有一個'dated'列,它是一個日期時間。 我最初將datetime強制轉換為日期,因為這是group by似乎正常工作的唯一方法。 由於“在d.datekey = BBB.datekey上”這一行,我不斷收到錯誤“操作數類型沖突:日期與int不兼容” ..關於簡單解決方法的任何建議嗎?

select 
    distinct CONVERT (date,convert(char(8),d.datekey )) as Date
    , isnull(BBB.reccount,0) DimAccount
from dimdate d
left outer join(
    Select 
        cast(createdon as date) datekey
        , count(*) RecCount
    from DimAccount 
    group by cast(createdon as date)
)BBB on d.datekey = BBB.datekey
where d.datekey like '2017%'
group by d.datekey
,BBB.RecCount
having MAX(DATEDIFF(dd, CONVERT(date, CAST(d.Datekey  AS CHAR(8)), 101), GETDATE())) > -1
order by date desc

這樣的事情應該讓你開始

from dimDate dd join dimAccount da 
on cast(da.createdOn as date) = cast(cast(dd.dateKey as char(8)) as date)

where dd.year = 2017  -- or you can filter on da.createdOn >= '20170101'

實際上,如果您的dimDate表具有實際的日期列,則根本不需要強制轉換dateKey。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM