Raksta tapšanas laikā ir trešdiena. Izpildot Select DatePart(dw, getdate()) iegūstu rezultātu "4", lai arī ir 3. nedēļas diena pēc Latvijas standartiem:
Ko darīt? Viens risinājums ir izmantot Set DateFirst:
Bet šis uzstādījums strādās tikai konkrētās konekcijas darbības laikā.
Problēmas cēlonis savukārt ir tas, ka SQL Server iestatījumos ir norādīts English kā noklusētā kultūra (Management studio- labā poga uz servera nosaukuma, properties-> advanced):
Līdz ar to veidojot jaunu lietotāju, arī tam pēc noklusējuma noklusētā kultūra ir English:
Ja, veidojot jaunu lietotāju, norādīs "Latvian" (vai arī kā servera noklusēto uzstādījumu uzliks noklusēto valodu "Latvian"), tad lietotājiem pirmā nedēļas diena arī būs 1 (pirmdiena).
Protams, arī eksistējošiem lietotājiem var nomainīt noklusēto valodu (Management studio-> Serveris-> Security-> Logins un tad atbilstošais pieteikumvārds).
vēl jau var
AtbildētDzēstselect (@@DATEFIRST+DATEPART(WEEKDAY,getdate()))%7
kas nu galīgi nav atkarīgs no set date first, kas var aizmirst uzlikties, ir pat gadījies.
Vienīgais,kas ir neērti, ka pirmdiena =2 , setdiena = 0 un svētdiena =1
P.S Microsoft un normāla datumu apstrāde in nepavienojamas lietas.
Super ideja!
AtbildētDzēstTo ka neērti varbūt var risināt šitā:
Select (6+@@DATEFIRST+DATEPART(WEEKDAY,getdate()))%7