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-04
là ngày cho một số nguyên của201404
Cảm ơn
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-04
là ngày cho một số nguyên của201404
Cảm ơn
Câu trả lời:
Trên phiên bản 2012 trở lên, bạn có thể sử dụng format
chứ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 convert
hà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
Có lẽ gọn gàng hơn một chút:
SELECT YEAR(@dateb)*100 + MONTH(@dateb);
Điều này có thể làm mẹo cho bạn?
set @dateb = cast(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112) as int)
À xin lỗi, tôi quên mất, bạn cũng sẽ cần một chuỗi con. Vậy nó là:
select cast(substring(convert(varchar, dateadd(month, datediff(month, 0, getdate()) - 3, 0), 112), 0, 7) as int)
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
FORMAT()
, nói chung . YMMV.