簡體   English   中英

將十進制或Varchar轉換為日期

[英]Convert Decimal or Varchar into Date

我有2個領域。

出生=數據類型十進制(12,4)&日期=數據類型日期

Birth         Date 
19650101   2015-07-09  

我如何獲得看起來像這樣的結果

我希望結果像這樣

Birth             Date          
1965-01-01       2015-07-09       

其中Birth是Date數據類型而不是十進制(12,4)

要將數字19650101轉換為日期,請使用

CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112)

要獲得年數(至小數點后一位),您可以執行以下操作:

ROUND(
    DATEDIFF(day,
         CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112),
         [Date])/365.25
     ,1)

可能不確切,但應接近一年的十分之一。

您可以使用此:

-- Create demo data
CREATE TABLE #dates(birth int, date date)

INSERT INTO #dates(birth,date)
VALUES(19650101,N'2015-07-09')

-- Your work
SELECT CONVERT(date,CONVERT(nvarchar(max),birth),112) as birth, date, 
        DATEDIFF(year,
            CONVERT(date,CONVERT(nvarchar(max),birth),112),
            date
        ) as years
FROM #dates

-- Cleanup
DROP TABLE #dates

這取決於您提供的確切格式( 19650101 )。

我認為您不需要四舍五入。 只需將您的十進制值轉換為“-”,如下所示:)

select left(birth,4) +'-' + 
substring(convert(nvarchar,birth),5,2)+'-'+ 
substring(convert(nvarchar,birth),7,2)

這是進行此轉換的一種方法。

cast(cast(FLOOR(birth) as CHAR(8)) as DATE)

暫無
暫無

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

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