МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 4
На тему: “Використання дати і часу та представлення геоінформації у SQL Server 2008 ”
З дисципліни : " Бази даних. Частина 2 "
Лектор:
Доцент
Павич Н.Я.
Тема роботи: Використання дати і часу та представлення геоінформації у SQL Server 2008
Мета роботи: Навчитися використовувати функції для роботи з датою і часом та представлення геоінформації у SQL Server 2008.
Індивідуальне завдання
Продемонструвати використання функцій для роботи із датою та часом.
Продемонструвати використання вказаного типу даних та функцій для роботи із geometry.
Використовуючи щонайменше 4 типи geometry створити вказаний об’єкт.
Варіант 6. STIntersection , BufferWithTolerance , STIsSimple , шафа
Результати виконання завдання
1.Спочатку створюємо таблицю для роботи з датами і заносимо в неї дані.
За допомогою функції DATEDIFF(HOUR, StartDate, EndDate) визначаємо різницю в годининах між відповідними початковими і кінцевими датами.
За допомогою функції DATEADD(day, 1, getdate()) дізнаємось завтрашню дату.
За допомогою функції DATEPART дізнаємося поточний рік,місяць,день,годину, хвилину, секунду.
В кінці запиту знищуємо таблицю.
use Z
go
create table Dates
(
StartDate datetime,
EndDate datetime)
go
insert into Dates ( StartDate, EndDate)
values ( '2009-10-29', '2009-11-15'),
( '2009-10-28', '2009-10-31'),
( '2009-09-09 12:15:00', '2009-11-15 14:20:00'),
( '2009-10-19', '2009-11-30')
go
select StartDate, EndDate, DATEDIFF(HOUR, StartDate, EndDate) as PeriodInHours
from Dates;
select getdate() as TodayDate, DATEADD(day, 1, getdate()) as TomorrowDadte, 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];
drop table Dates;
2. STIntersection- Повертає об'єкт, що представляє точки, в яких екземпляр geometry перетинається з іншим екземпляром geometry.
BufferWithTolerance - Повертає геометричний об'єкт, що представляє об'єднання всіх точок, відстань від яких до заданого екземпляра geometry не перевищує заданого значення з вказаною похибкою.
BufferWithTolerance ( distance, tolerance, relative )
Distance- вираз типу float задає відстань до фігури що описує заданий набір точок.
Tolerance- похибка в обчисленні точок що описує заданий об’єкт.
Relative- передаємо 1 якщо похибка відносна і 0 якщо абсолютна.
STIsSimple - повертає 1 якщо фігура проста і 0 якщо фігура складна.
use Z;
use Z;
CREATE TABLE S
( id int IDENTITY (1,1),
Value varchar(20),
Geom geometry,
GeomText AS Geom.STAsText() );
GO
DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))', 0);
SET @h = geometry::STGeomFromText('POLYGON((3 1, 3 4, 7 4, 7 1, 3 1))', 0);
SELECT @g.STIntersection(@h).ToString();
INSERT INTO S (Value, Geom)
VALUES
('Перетин', geometry::STGeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))', 0)),
('Перетин', geometry::STGeomFromText('POLYGON((3 1, 3 4, 7 4, 7 1, 3 1))', 0))
select * from S where Value='Перетин'
SELECT @g.BufferWithTolerance(1, .7,1).ToString();
SELECT @g.STIsSimple();
GO
drop table S
3.
use Z;
--создадим таблицу
CREATE TABLE SpatialTable
( id int IDENTITY (1,1),
Value varchar(20),
Geom geometry,
GeomText AS Geom.STAsText() );
GO
--вставляем данные
INSERT INTO SpatialTable (Value, Geom)
VALUES
('Шафа', geometry::STGeomFromText('
GEOMETRYCOLLECTION(
LINESTRING (1 1, 1 12, 1 12,7 12,7 1,1 1, 7 1,13 1, 13 4,7 4,13 4,13 9,7 9, 13 9,13 12,7 12,
19 12,19 1,13 1)
, POLYGON((18 1, 18 0, 19 0, 19 1,18 1))
, POLYGON((1 1, 1 0, 2 0, 2 1,1 1))
)', 0)),
('Шафа', geometry::STGeomFromText('LINESTRING(
14 6, 14 8)', 0)),
('Шафа', geometry::STGeomFromText('LINESTRING(
6 6, 6 8)', 0)),
('Шафа', geometry::STGeomFromText('point(
0 0)', 0))
;
select * from SpatialTable where Value='Шафа'
drop table SpatialTable
Висновок
На даній лабораторній роботі я навчився використовувати функції для роботи з датою і часом та ознайомився із представленням геоінформації у SQL Server 2008 за допомогою типу geometry.