Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 10825|Отговор: 0

[Източник] Практическо SQL изявление: оценка на дата

[Копирай линк]
Публикувано в 26.11.2014 г. 15:53:01 ч. | | |

ОБЯВЕТЕ @dt среща
SET @dt=GETDATE()

DECLARE @number int
КОМПЛЕКТ @number=3

--1. Посочете датата на първия или последния ден от годината
--А. Първият ден на годината
SELECT Co nVERT(char(5),@dt,120)+ '1-1'

--Б. Последният ден от годината
SELECT Co nVERT(char(5),@dt,120)+ '12-31'


--2. Първият или последният ден от тримесечието, в което се намира посочената дата
--А. Първи ден на тримесечието
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Месец,
DATEPART(Тримесечие,@dt)*3-Месец nth(@dt)-2,
@dt),
120)+ '1 ')

--Б. Последен ден от тримесечието (решение по ДЕЛОТО)
SELECT Co nVERT(datetime,
Co nVERT(char(8),
DATEADD(Месец,
DATEPART(Четвърт, @dt)*3-Месец nth(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) в(1,4)
ПОСЛЕ '31' 'ИНАЧЕ '30' ПРИКЛЮЧИ)

--C. Последен ден от тримесечието (алгоритъм за директен push)
SELECT DATEADD(Ден,-1,
Co nVERT(char(8),
DATEADD(Месец,
1+DATEPART(Четвърт, @dt)*3-Месец nth(@dt),
@dt),
120)+ '1 ')


--3. Първият или последният ден от месеца, в който се намира посочената дата
--А. Първият ден на месеца
SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')

--Б. Последният ден от месеца
SELECT DATEADD(Ден,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1')

--C. Последен ден от месеца (лесен за използване грешен метод)
SELECT DATEADD(Mon nth,1,DATEADD(Day,-DAY(@dt),@dt))


--4. Всеки ден от седмицата, в който се намира посочената дата
ИЗБЕРЕТЕ DATEADD(Ден,@number-DATEPART(Делничен ден,@dt),@dt)


--5. Всеки ден от седмицата, в който се намира посочената дата
--А.  Неделя като първи ден от седмицата
ИЗБЕРЕТЕ DATEADD(Ден,@number-(DATEPART(Делничен ден,@dt)+@@DATEFIRST-1)%7,@dt)

--Б.  Понеделник е първият ден от седмицата
ИЗБЕРЕТЕ DATEADD(Ден,@number-(DATEPART(Делн.@dt)+@@DATEFIRST-2)%7-1,@dt)






Предишен:Проблем с използването на индекса, когато sqlserver обработва като '%keyword%'
Следващ:ORACLE 11g Нови функции - Позволява на DDL заключванията да чакат за DML заключвания
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com