![](/img/trans.png)
[英]SQL Server 2000 trouble converting nvarchar to datetime
[英]Converting nvarchar (mm/yyyy) to DateTIme in Sql Server
我在Sql Server表中有一個nvarchar列,以mm / yyyy格式存儲日期值。
示例:03/2017
現在如何將此字符串轉換為日期時間,以便我可以將此日期時間與當前日期時間進行比較(僅比較月和年)
我們可以拆分並實現這一點,如下所示:
declare @v varchar(7)
select @v = '03.2017'
select convert(datetime,right(@v,4) + left(@v,2) + '01')
嘗試
Convert(datetime,'01/' + [field],103)
使用LEFT和RIGHT:
SELECT CONVERT(DATETIME, RIGHT('03/2017', 4) + '-' + LEFT('03/2017', 2) + '-01')
如前所述,解析字符串是正確的方法,但是我將添加它,因為它還顯示了獲取當前月份的第一天與之進行比較,並且在原始帖子中已經提到了。
DECLARE @test varchar(10) = '03/2017'
DECLARE @firstOfMonth datetime
DECLARE @toCompare datetime
SELECT @firstOfMonth =
CAST(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '/' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '/01' AS DATETIME)
SELECT @toCompare = CONVERT(datetime, right(@test, 4) + '-' + left(@test, 2) + '-01')
declare @strDate nvarchar(10) = '03/2017'
declare @newDate datetime = null
select @newDate= convert(date,replace(@strDate,'/','/1/'))
select month (@newdate)
select year (@newdate)
-現在做你的比較----
嗯,也許我頭腦很笨拙,但是OP似乎並不想將NVARCHAR
值實際轉換為日期時間...他只是想將NVARCHAR
值中的月份和年份與MONTH()
和YEAR()
的實際DATETIME
值,並且措辭有點差...
真正的答案IMO是您不能將MM / YYYY本身轉換為DATETIME
值,這就是每個人都試圖添加月初的原因。 但是為什么不做這樣的事情...
SELECT *
FROM <sometable>
WHERE MONTH(<sometable>.<somecolumn>) = LEFT('03/2017',2)
AND YEAR(<sometable>.<somecolumn>) = RIGHT('03/2017',4)
;
並且由於OP還詢問了“當前日期時間,僅比較月份和年份”,因此您可以...
SELECT *
FROM <sometable>
WHERE MONTH(GETDATE()) = LEFT(<somecolumn>,2)
AND YEAR(GETDATE()) = RIGHT(<somecolumn>,4)
;
我想這就是他要問的...? 也許?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.