Datumi se pojavljuju u gotovo svakoj bazi — evidencija zaposlenih, rođendani, datumi narudžbina, računi, prijave korisnika i sl.

U SQL Server-u postoje specijalni tipovi podataka za čuvanje datuma i vremena:

Tip Opis
DATE Samo datum (npr. 2025-10-08)
TIME Samo vreme (npr. 14:35:20)
DATETIME Datum i vreme zajedno
SMALLDATETIME Datum i vreme sa manjom preciznošću

U primerima radimo sa tabelom:

CREATE TABLE Zaposleni (
    ID int,
    Ime nvarchar(30),
    DatumRodjenja date,
    DatumZaposlenja datetime
);

1️⃣
Funkcija Opis Primer Rezultat (primer)
GETDATE() Vraća trenutni datum i vreme SELECT GETDATE(); 2025-10-08 10:42:15.157
SYSDATETIME() Isto, ali sa većom preciznošću SELECT SYSDATETIME(); 2025-10-08 10:42:15.1578946
CURRENT_TIMESTAMP ANSI standard, isto što i GETDATE() SELECT CURRENT_TIMESTAMP; 2025-10-08 10:42:15.157

Napomena: U SQL Serveru 2008 (koji koristimo uz Visual Studio 2010) sve tri funkcije rade, ali SYSDATETIME() nije neophodna ako preciznost nije bitna.


2️⃣

Za izdvajanje godine, meseca ili dana koristi se funkcija DATEPART().

Primer Objašnjenje Rezultat
SELECT DATEPART(YEAR, GETDATE()); Vraća godinu 2025
SELECT DATEPART(MONTH, GETDATE()); Vraća mesec 10
SELECT DATEPART(DAY, GETDATE()); Vraća dan u mesecu 8
SELECT DATEPART(WEEKDAY, GETDATE()); Redni broj dana u nedelji (1–7) 3 (ako je sreda)

Alternativno, koristi se i DATENAME() da bi se rezultat vratio kao tekst:

SELECT DATENAME(MONTH, GETDATE());  -- "October"
SELECT DATENAME(WEEKDAY, GETDATE());  -- "Wednesday"

3️⃣  Računanje sa datumima

SQL Server omogućava dodavanje ili oduzimanje dana, meseci, godina i drugih vremenskih jedinica pomoću funkcije DATEADD().

Primer Objašnjenje Rezultat
SELECT DATEADD(DAY, 5, GETDATE()); Dodaje 5 dana 2025-10-13
SELECT DATEADD(MONTH, -2, GETDATE()); Oduzima 2 meseca 2025-08-08
SELECT DATEADD(YEAR, 1, '2024-10-08'); Dodaje godinu 2025-10-08

U praksi, ovo se koristi za:

  • izračunavanje roka važenja (npr. 30 dana od danas),

  • provere isteka pretplate,

  • kreiranje vremenskih oznaka u evidencijama.

Razliku između dva datuma (u danima, mesecima, godinama…) izračunavamo pomoću DATEDIFF().

Primer Opis Rezultat
SELECT DATEDIFF(DAY, '2025-01-01', GETDATE()); Broj dana od Nove godine do danas 281
SELECT DATEDIFF(YEAR, '2000-05-12', GETDATE()); Starost u godinama 25
SELECT DATEDIFF(MONTH, '2025-05-01', '2025-10-08'); Razlika u mesecima 5

4️⃣

U SQL-u se konverzija datuma u tekst (string) radi pomoću funkcija za konverziju tipova, najčešće:

  • CONVERT()

  • CAST()

  • ili u novijim verzijama, FORMAT() (od SQL Server 2012 naviše).

Pošto koristimo MS SQL Server 2008, funkcija FORMAT() nije dostupna, tako da ćemo da koristimo CONVERT() ili CAST().


🔹 1. CAST() – jednostavan način

SELECT CAST(GETDATE() AS NVARCHAR(20)) AS DatumTekst;

Rezultat (primer):

DatumTekst
-------------------
Oct 15 2025 10:30AM

Napomena: Ovaj format zavisi od podrazumevane lokalne postavke servera (npr. engleski format meseca).


🔹 2. CONVERT() – precizna kontrola formata

Funkcija CONVERT() ima oblik:

CONVERT( ciljni_tip, izraz, stil )

Gde je stil broj koji određuje format datuma.


Primer:

SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS DatumTekst;

Rezultat:

DatumTekst
----------
15.10.2025

🔹 Najčešći stilovi za CONVERT() (MS SQL Server):

Stil Format Primer rezultata
101 mm/dd/yyyy 10/15/2025
102 yyyy.mm.dd 2025.10.15
103 dd/mm/yyyy 15/10/2025
104 dd.mm.yyyy 15.10.2025
105 dd-mm-yyyy 15-10-2025
108 hh:mm:ss 10:30:45
120 yyyy-mm-dd hh:mi:ss 2025-10-15 10:30:45
112 yyyymmdd 20251015

Kombinovanje datuma i vremena:

SELECT CONVERT(VARCHAR(19), GETDATE(), 120) AS DatumVreme;

Rezultat:

DatumVreme
-------------------
2025-10-15 10:30:45

 Primeri

Kreirati datu tabelu i uneti nekoliko datuma, pa izvršiti upite koji koriste različite funkcije:

CREATE TABLE Projekti (
    ID int,
    Naziv nvarchar(30),
    DatumPocetka date,
    Rok date
);

INSERT INTO Projekti VALUES
(1, 'Web sajt', '2025-09-15', '2025-10-15'),
(2, 'Mobilna aplikacija', '2025-06-01', '2025-09-30'),
(3, 'SQL kurs', '2025-10-01', '2025-12-01');
Upiti:
-- Trenutni datum
SELECT GETDATE() AS Danas;

-- Projekti koji još traju
SELECT Naziv
FROM Projekti
WHERE Rok > GETDATE();

-- Broj dana do roka
SELECT Naziv, DATEDIFF(DAY, GETDATE(), Rok) AS DanaDoRoka
FROM Projekti;

-- Novi rok: produženje za 10 dana
SELECT Naziv, DATEADD(DAY, 10, Rok) AS NoviRok
FROM Projekti;

  1. Pronaći godinu početka svakog projekta.

  2. Pronaći koliko dana je prošlo od početka do roka svakog projekta.

  3. Dodati 7 dana na rok projekta „SQL kurs“.

  4. Prikazati mesec početka svakog projekta kao tekst (npr. „October“).


Nivo Zadatak
🟢 Za slabije učenike Napisati upit koji prikazuje trenutni datum i vreme (GETDATE()), i razliku u danima između dva poznata datuma.
🟡 Za srednje učenike Prikazati naziv projekta i broj dana do isteka roka, koristeći DATEDIFF().
🔵 Za napredne učenike Izračunati prosečno trajanje projekata (razlika Rok - DatumPocetka), i prikazati datum kada će prosečno trajanje biti završeno ako počne danas.

U svim primerima koristi se sistemska funkcija GETDATE() – ona vraća trenutni datum i vreme.


Zadatak 1

Prikazati trenutni datum kao tekst u formatu dd.mm.yyyy.

 SQL upit:

SELECT CONVERT(VARCHAR(10), GETDATE(), 104) AS DatumTekst;

 Rezultat:

15.10.2025

 Zadatak 2

Prikazati trenutni datum kao tekst u ISO formatu yyyy-mm-dd.

 SQL upit:

SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS DatumTekst;

 Rezultat:

2025-10-15

 Zadatak 3

Prikazati samo vreme (sate, minute i sekunde).

 SQL upit:

SELECT CONVERT(VARCHAR(8), GETDATE(), 108) AS VremeTekst;

 Rezultat:

10:34:57

 Zadatak 4

Prikazati datum i vreme zajedno u formatu: dd-mm-yyyy hh:mi:ss.

Hint: koristiti stil 105 za datum i 108 za vreme, pa ih spoji operatorom +.

 SQL upit:

SELECT 
    CONVERT(VARCHAR(10), GETDATE(), 105) + ' ' + 
    CONVERT(VARCHAR(8), GETDATE(), 108) AS DatumVremeTekst;

 Rezultat:

15-10-2025 10:34:57

 Zadatak 5

Pretvoriti određeni datum (2025-01-01) u tekst i prikazati ga u formatu 01/01/2025.

 SQL upit:

SELECT CONVERT(VARCHAR(10), '2025-01-01', 101) AS DatumTekst;

 Rezultat:

01/01/2025

🌐 Linkovi za dalji rad i bolje razumevanje
  1. 📒 W3Schools: SQL Working With Dates
    🔗 W3Schools: SQL Server Date Functions

  2. 📘 Microsoft Docs — CAST i CONVERT (Transact-SQL):
    🔗 https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

  3. 📗 Microsoft Docs — Date and Time Styles u CONVERT funkciji:
    🔗 https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql#date-and-time-styles

  4. 📙 W3Schools SQL CAST() i CONVERT() Tutorial:
    🔗 https://www.w3schools.com/sql/func_sqlserver_cast.asp
    🔗 https://www.w3schools.com/sql/func_sqlserver_convert.asp

..


Last modified: Friday, 17 October 2025, 1:22 PM