МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 4
На тему: “ Використання дати і часу та представлення геоінформації у SQL Server 2008 ”
З дисципліни : " Бази даних. Частина 2 "
Лектор:
Доцент
Павич Н.Я.
Тема роботи: Використання дати і часу та представлення геоінформації у SQL Server 2008
Мета роботи: Навчитися використовувати функції для роботи з датою і часом та представлення геоінформації у SQL Server 2008.
Індивідуальне завдання
Продемонструвати використання функцій для роботи із датою та часом.
Продемонструвати використання вказаного типу даних та функцій для роботи із geometry.
Використовуючи щонайменше 4 типи geometry створити вказаний об’єкт.
Варіант 24. STIsEmpty , M , STNumGeometries , молоток
DATEADD, DATEDIFF, DATEPART, DATENAME
Результати виконання завдання
Створюємо нову базу даних та вставляємо в неї таблицю для роботи з датами:
use DateGeometry
go
create table Dates
(ID int primary key,
CurrDate datetime default getdate(),
StartDate datetime,
EndDate datetime)
go
Заносимо дані в таблиці:
insert into Dates (ID, StartDate, EndDate)
values (01, '2009-10-29', '2009-11-15'),
(02, '2009-10-28', '2009-10-31'),
(03, '2009-09-09 10:15:00', '2009-11-15 14:20:00'),
(04, '2009-10-19', '2009-11-30'),
(05, '2009-08-30', '2009-09-15'),
(06, '2009-09-14', '2009-11-30'),
(07, '2008-04-16', '2009-10-29')
go
select getdate() as TodayDate, DATEADD(day, 1, getdate()) as TomorrowDadte;
select ID, StartDate, EndDate, DATEDIFF(day, StartDate, EndDate) as PeriodInDays, DATEDIFF(HOUR, StartDate, EndDate) as PeriodInHours
from Dates;
select DATEPART(year, getdate()) as [Year],
DATEPART(MONTH, getdate()) as [Month], DATEPART(DAY, getdate()) as [Day],
DATEPART(Hour, getdate()) as [Hour], DATEPART(MI, getdate()) as [Minutes], DATEPART(S, getdate()) as [Seconds], DATEPART(MS, getdate()) as [Miliseconds];
select DATENAME(day, getdate()) as [Day], DATENAME(M, getdate()) as [Month],DATENAME(YEAR, getdate()) as [Year],
DATENAME(DAYOFYEAR, getdate()) as [DayOfYear];
STIsEmpty() - повертає значення 1, якщо екземпляр geometry пустий і повертає значення 0, якщо екземпляр geometry не є пустим.
M - властивість M (міра) для еземпляра geometry. Семантика значення цієї властивості визначається користувачем. Якщо екземпляр geometry не є Point, то властивість має значення NULL, як і для всіх примірників Point, для яких цю властивість не задано. Ця властивість призначена лише для читання.
STNumGeometries() - Повертає кількість геометричних об'єктів, що складають еземпляр geometry. Цей метод повертає 1, якщо екземпляр geometry не є екземпляром MultiPoint, MultiLineString, MultiPolygon або GeometryCollection, і 0, якщо екземпляр geometry порожній. Якщо GeometryCollection містить порожні елементи, STNumGeometries() не поверне 0. Хоча елементи в екземплярі GeometryCollection порожні, сам екземпляр не є порожнім набором.
Створюємо таблицю для тестування:
create table GeometryTest
(ID int primary key,
Obj geometry,
AsText as Obj.STAsText(),
IsEmpty as Obj.STIsEmpty(),
ObjCount as Obj.STNumGeometries(),
M as Obj.M)
go
insert into GeometryTest (ID, Obj) values
(1, geometry::STGeomFromText('POINT (3 4)', 0))
go
insert into GeometryTest (ID, Obj) values
(2, geometry::STGeomFromText('POINT (3 4 5 6)', 0))
go
insert into GeometryTest (ID, Obj) values
(3, geometry::STGeomFromText('LINESTRING (3 4 5 6, 5 10 4 8)', 0))
go
insert into GeometryTest (ID) values
(4)
go
insert into GeometryTest (ID, Obj) values
(5, geometry::STGeomCollFromText('GEOMETRYCOLLECTION(
POINT (3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1))
go
insert into GeometryTest (ID, Obj) values
(6, geometry::STGeomCollFromText('GEOMETRYCOLLECTION(
POINT (3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 0))
go
select * from GeometryTest;
insert into GeometryTest (ID, Obj) values
(7, geometry::STGeomCollFromText('GEOMETRYCOLLECTION(
MULTIPOLYGON(((1 11, 2 12, 4 12, 3 11, 1 11)),
((4 11, 5 11, 6 12, 5 12, 4 11))),
MULTILINESTRING((1 11, 5 11),(2 12, 6 12)),
POLYGON((5 11, 7 9, 8 10, 6 12, 5 11)),
LINESTRING(1 11, 1 9, 7 9),
LINESTRING(3 9, 3 1, 4 1, 4 9),
POLYGON((4 9, 5 9, 5 2, 4 1, 4 9)))', 0))
go
select ID, Obj.MakeValid() AS Obj, AsText, IsEmpty, ObjCount, M from GeometryTest where ID = 7;
Висновок
На даній лабораторній роботі я навчився використовувати функції для роботи з датою і часом та ознайомився із представленням геоінформації у SQL Server 2008 за допомогою типу geometry.