Nvarchar (mm/yyyy) ni SQLTurkning DataTime ga aylantirishi

SQL/yyyy formatidagi sana qiymatlarini saqlaydigan SQL Server jadvalidagi nvarchar ustuni bor.

Masalan: 03/2017

Endi bu satrni datetimega aylantirish uchun, bu sana vaqtini joriy sana bilan solishtirishim mumkin (faqat oy va yilni taqqoslash)

0
SQL Server 2008
qo'shib qo'ydi muallif Pearl, manba
RDBMS, mySQL yoki SQL Serverni tanlang?
qo'shib qo'ydi muallif apomene, manba

6 javoblar

Quyidagi kabi bo'linib, shunday qilishimiz mumkin:

declare @v varchar(7)
select @v = '03.2017'

select convert(datetime,right(@v,4) + left(@v,2) + '01')
3
qo'shib qo'ydi

Ushlab ko'ring

Convert(datetime,'01/' + [field],103)
1
qo'shib qo'ydi

Yuqorida aytib o'tilganidek, mag'lubiyatni tahlil qilish to'g'ri yondashuvdir, biroq men uni qo'shib qo'yaman, chunki joriy oyning birinchi kunini dastlabki lavozimda solishtirish va solishtirishga qaratilgan.

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')
0
qo'shib qo'ydi

Um, ehtimol men boshimda qalinligim bor, lekin OX aslida NVARCHAR qiymatini bir datetime aylantirmoqchi bo'lganiga o'xshamaydi ... u faqat oyni va yilni solishtirishni istaydi dolzarb DATETIME qiymatining MONTH() va YEAR() uchun NVARCHAR qiymatini yozib, ozgina yomon ...

Haqiqiy javob, IMO siz MM/YYYY ni o'zingiz DATETIME ga o'zgartira olmaysiz , shuning uchun ham har oyning birinchi kunini qo'shishga harakat qilasiz ; lekin nima uchun bunday qilmaslik kerak ...

SELECT *
FROM 
WHERE MONTH(.) = LEFT('03/2017',2)
AND YEAR(.) = RIGHT('03/2017',4)
;

Va O'X ham «faqat oyni va yilni taqqoslaganda, hozirgi sana vaqtini» so'ragani uchun ...

SELECT *
FROM 
WHERE MONTH(GETDATE()) = LEFT(,2)
AND YEAR(GETDATE()) = RIGHT(,4)
;

Men deb o'ylayman so'ragan narsa shu ...? Balki?

0
qo'shib qo'ydi

LEFT va SAQLANING:

SELECT CONVERT(DATETIME, RIGHT('03/2017', 4) + '-' + LEFT('03/2017', 2) + '-01')
0
qo'shib qo'ydi
declare @strDate nvarchar(10) = '03/2017'
declare @newDate datetime = null

select @newDate=  convert(date,replace(@strDate,'/','/1/'))

select month (@newdate)
select year (@newdate)

- Bilasizmi?

0
qo'shib qo'ydi