Chuyển đổi ngày yyyy-mm-dd thành số nguyên YYYYMM


17

Làm cách nào tôi có thể chuyển đổi @dateb:

SET @dateb = dateadd(month, datediff(month, 0, getdate()) - 3, 0)

trả về 2014-04-04là ngày cho một số nguyên của201404

Cảm ơn

Câu trả lời:


19

Trên phiên bản 2012 trở lên, bạn có thể sử dụng formatchức năng để chỉ nhận năm và tháng, sau đó chọn nó dưới dạng int.

Trên các phiên bản trước năm 2012, bạn có thể thực hiện định dạng với converthàm, sau đó chuyển thành int.

declare @dateb datetime
set @dateb = getdate()

select cast(format(@dateb,'yyyyMM') as int) --2012 or higher
select cast(convert(varchar(6),@dateb,112) as int) -- all versions


13

Có lẽ gọn gàng hơn một chút:

SELECT YEAR(@dateb)*100 + MONTH(@dateb);

1
Tôi đồng ý với điều này hết lòng. Bạn có một ngày, trong đó có các trường con số nguyên; bạn muốn một số nguyên. Tại sao trên trái đất làm bất kỳ xử lý chuỗi?
Ross Presser


-1

Một phương pháp khác:

DECLARE @PeriodToCalculate_DATE [DATE] ='2016-02-29'

SELECT 
   CAST(DATEPART(YYYY,@PeriodToCalculate_DATE) AS [CHAR](4))
       + RIGHT('0' + CAST(DATEPART(M,@PeriodToCalculate_DATE) AS [VARCHAR](2)),2)  
       + RIGHT('0' + CAST(DATEPART(D,@PeriodToCalculate_DATE) AS [VARCHAR](2)),2);

Tặng: 20160229

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.