Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

6 Fungsi untuk Mendapatkan Hari, Bulan, dan Tahun dari Tanggal di SQL Server

Transact-SQL mencakup banyak fungsi yang membantu kami bekerja dengan tanggal dan waktu. Salah satu tugas yang lebih umum ketika bekerja dengan tanggal adalah untuk mengekstrak bagian yang berbeda dari tanggal. Misalnya, terkadang kita hanya menginginkan tahun, atau bulan. Di lain waktu kita mungkin menginginkan hari dalam seminggu. Bagaimanapun, ada banyak cara untuk melakukan ini di SQL Server.

Secara khusus, fungsi berikut memungkinkan Anda untuk mengembalikan hari, bulan, dan tahun dari tanggal di SQL Server.

  • DAY() , MONTH() , dan YEAR()
  • DATEPART()
  • DATENAME()
  • FORMAT()

Fungsi-fungsi ini dijelaskan di bawah ini.

Fungsi DAY(), MONTH(), dan YEAR()

Cara paling jelas untuk mengembalikan hari, bulan, dan tahun dari tanggal adalah dengan menggunakan fungsi T-SQL dengan nama yang sama. Ya, T-SQL memiliki fungsi yang dibuat khusus untuk mengembalikan ketiga bagian tanggal ini.

Berikut ini contoh cara kerjanya:

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DAY(@date) AS DAY,
    MONTH(@date) AS MONTH,
    YEAR(@date) AS YEAR;

Hasil:

+-------+---------+--------+
| DAY   | MONTH   | YEAR   |
|-------+---------+--------|
| 2     | 6       | 2018   |
+-------+---------+--------+

Fungsi-fungsi ini mengembalikan datepart sebagai bilangan bulat. Mereka mengembalikan hasil yang sama dengan DATEPART() fungsi kembali untuk bagian tanggal yang ditentukan.

Fungsi DATEPART()

DATEPART() fungsi dibangun khusus untuk mengembalikan bagian tertentu dari tanggal. Oleh karena itu, kita dapat menggunakan fungsi ini untuk mengembalikan hasil yang sama persis seperti contoh sebelumnya:

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DATEPART(day, @date) AS DAY,
    DATEPART(weekday, @date) AS WEEKDAY,
    DATEPART(month, @date) AS MONTH,
    DATEPART(year, @date) AS YEAR;

Hasil:

+-------+-----------+---------+--------+
| DAY   | WEEKDAY   | MONTH   | YEAR   |
|-------+-----------+---------+--------|
| 2     | 7         | 6       | 2018   |
+-------+-----------+---------+--------+

Salah satu manfaat menggunakan fungsi ini adalah Anda juga dapat mengembalikan bagian lain dari tanggal dan waktu. Seperti yang Anda lihat dengan contoh ini, saya mengembalikan hari kerja dan juga hari (day adalah hari dalam sebulan, weekday adalah hari dalam seminggu). Anda juga dapat mengembalikan berbagai bagian waktu, seperti menit, detik, milidetik, dll. Untuk contoh lainnya, lihat DATEPART() Contoh di SQL Server.

DATEPART() fungsi mengembalikan hasilnya sebagai bilangan bulat, dan oleh karena itu, Anda tidak akan bisa mendapatkan nama bulan atau nama hari kerja dari tanggal tersebut. Namun jangan khawatir, Anda dapat menggunakan DATENAME() atau FORMAT() berfungsi untuk itu.

Fungsi DATENAME()

DATENAME() fungsinya mirip dengan DATEPART() fungsi, kecuali bahwa ia mengembalikan hasil sebagai string karakter, bukan bilangan bulat. DATENAME() juga mengembalikan bulan dan hari kerja sebagai nama lengkapnya, bukan nilai numeriknya.

Contoh:

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DATENAME(day, @date) AS DAY,
    DATENAME(weekday, @date) AS WEEKDAY,
    DATENAME(month, @date) AS MONTH,
    DATENAME(year, @date) AS YEAR;

Hasil:

+-------+-----------+---------+--------+
| DAY   | WEEKDAY   | MONTH   | YEAR   |
|-------+-----------+---------+--------|
| 2     | Saturday  | June    | 2018   |
+-------+-----------+---------+--------+

Untuk lebih banyak contoh fungsi ini, lihat DATENAME() Contoh di SQL Server.

Fungsi FORMAT()

Kita dapat menggunakan FORMAT() fungsi untuk mengembalikan nilai yang sama dengan DATENAME() fungsi, dan banyak lagi.

Ini adalah fungsi yang lebih serbaguna daripada yang sebelumnya. Ini memungkinkan Anda untuk memformat tanggal/waktu serta nilai numerik sebagai string. Nilai yang dikembalikan adalah nvarchar atau null (bergantung pada input), dan panjang string ditentukan oleh format yang ditentukan.

FORMAT() juga menyediakan lebih banyak opsi untuk bagaimana datepart disajikan. Anda dapat menentukan apakah akan menampilkannya sebagai satu karakter, dua karakter, tiga, empat, dan bahkan lima dalam beberapa kasus.

Berikut adalah contoh untuk ditunjukkan.

Hari

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    FORMAT(@date, 'd ') AS d,
    FORMAT(@date, 'dd') AS dd,
    FORMAT(@date, 'ddd') AS ddd,
    FORMAT(@date, 'dddd') AS dddd;

Hasil:

+-----+------+-------+----------+
| d   | dd   | ddd   | dddd     |
|-----+------+-------+----------|
| 2   | 02   | Sat   | Saturday |
+-----+------+-------+----------+

Bulan

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    FORMAT(@date, 'M ') AS M,
    FORMAT(@date, 'MM') AS MM,
    FORMAT(@date, 'MMM') AS MMM,
    FORMAT(@date, 'MMMMM') AS MMMM;

Hasil:

+-----+------+-------+--------+
| M   | MM   | MMM   | MMMM   |
|-----+------+-------+--------|
| 6   | 06   | Jun   | June   |
+-----+------+-------+--------+

Tahun

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT     
    FORMAT(@date, 'y ') AS y,
    FORMAT(@date, 'yy') AS yy,
    FORMAT(@date, 'yyy') AS yyy,
    FORMAT(@date, 'yyyy') AS yyyy,
    FORMAT(@date, 'yyyyy') AS yyyyy;

Hasil:

+-----+------+-------+--------+---------+
| y   | yy   | yyy   | yyyy   | yyyyy   |
|-----+------+-------+--------+---------|
| 18  | 18   | 2018  | 2018   | 02018   |
+-----+------+-------+--------+---------+

Perhatikan bahwa kami memiliki opsi untuk memformat bagian tahun sebagai lima digit.

Tentang Jumlah Digit

Saat mengembalikan bagian tanggal dalam bentuk digit, penentu format menentukan jumlah digit minimum yang akan dikembalikan. Misalnya, saat menggunakan  yyy , tahun akan ditampilkan sebagai tiga digit jika tahun adalah 0008 tetapi sebagai empat digit jika tahun adalah 2008 .

Contoh:

DECLARE @date datetime2 = '0008-06-02 08:24:14.3112042';
SELECT     
    FORMAT(@date, 'y ') AS y,
    FORMAT(@date, 'yy') AS yy,
    FORMAT(@date, 'yyy') AS yyy,
    FORMAT(@date, 'yyyy') AS yyyy,
    FORMAT(@date, 'yyyyy') AS yyyyy;  

Hasil:

+-----+------+-------+--------+---------+
| y   | yy   | yyy   | yyyy   | yyyyy   |
|-----+------+-------+--------+---------|
| 8   | 08   | 008   | 0008   | 00008   |
+-----+------+-------+--------+---------+

Juga, saat menggunakan opsi tunggal (mis. d ) sebagai penentu tanggal, Anda harus menambahkan spasi jika Anda hanya ingin bagian tanggal itu dikembalikan dengan sendirinya. Jika Anda tidak melakukan ini, Anda akan mendapatkan lebih dari satu bagian tanggal itu.

Contoh:

DECLARE @date datetime2 = '2008-06-02 08:24:14.3112042';
SELECT 
    FORMAT(@date, 'd ') AS 'Space',
    FORMAT(@date, 'd') AS 'No Space',
    FORMAT(@date, 'M ') AS 'Space',
    FORMAT(@date, 'M') AS 'No Space',
    FORMAT(@date, 'y ') AS 'Space',
    FORMAT(@date, 'y') AS 'No Space';

Hasil:

+---------+------------+---------+------------+---------+------------+
| Space   | No Space   | Space   | No Space   | Space   | No Space   |
|---------+------------+---------+------------+---------+------------|
| 2       | 6/2/2008   | 6       | June 2     | 8       | June 2008  |
+---------+------------+---------+------------+---------+------------+

Untuk lebih FORMAT() contoh, lihat Cara Memformat Tanggal dan Waktu di SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang terjadi pada transaksi yang tidak terikat ketika koneksi ditutup?

  2. Memulai SQL Server 2017 di Linux di portal Azure

  3. cross apply xml query berkinerja lebih buruk secara eksponensial saat dokumen xml tumbuh

  4. 3 Cara Mengembalikan Semua Tabel TANPA Kunci Utama di SQL Server

  5. Bagaimana cara menghasilkan id unik secara otomatis dalam SQL seperti UID12345678?