Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 10825|Відповідь: 0

[Джерело] Практичне SQL-твердження: оцінка дати

[Копіювати посилання]
Опубліковано 26.11.2014 15:53:01 | | |

ОГОЛОСІТЬ @dt дату, час
SET @dt=GETDATE()

ОГОЛОСИТИ @number int
SET @number=3

--1. Вкажіть дату першого або останнього дня року
--А. Перший день року
ВИБРАТИ Co nVERT(char(5),@dt,120)+ '1-1'

--Б. Останній день року
SELECT Co nVERT(char(5),@dt,120)+ '12-31'


--2. Перший або останній день кварталу, в якому розташована вказана дата
--Відповідь. Перший день кварталу
ВИБРАТИ Co nVERT(datetime,
Co nVERT(char(8),
DATEADD (Місяць,
DATEPART(Чверть,@dt)*3-Місяць nth(@dt)-2,
@dt),
120)+ '1 ')

--B. Останній день кварталу (рішення CASE)
ВИБРАТИ Co nVERT(datetime,
Co nVERT(char(8),
DATEADD (Місяць,
DATEPART(Чверть,@dt)*3-Мес nth(@dt),
@dt),
120)
+CASE WHEN DATEPART(Квартал,@dt) у (1,4)
ПОТІМ '31' 'ІНАКШЕ '30' ЗАКІНЧУЄТЬСЯ)

--C. Останній день кварталу (алгоритм прямого поштовху)
ВИБРАТИ DATEADD (День,-1,
Co nVERT(char(8),
DATEADD (Місяць,
1+DATEPART(Чверть,@dt)*3-Мес nth(@dt),
@dt),
120)+ '1 ')


--3. Перший або останній день місяця, у якому розташована вказана дата
--А. Перший день місяця
ВИБРАТИ 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(Місяць nth,1,DATEADD(День,-ДЕНЬ(@dt),@dt))


--4. Будь-який день тижня, у який розташована вказана дата
SELECT 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