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

Fungsi Skalar ODBC untuk Tanggal dan Waktu di SQL Server (Contoh T-SQL)

Anda dapat menggunakan fungsi skalar ODBC saat menjalankan pernyataan T-SQL di SQL Server. Ada berbagai jenis fungsi skalar ODBC, termasuk fungsi string, fungsi numerik, fungsi sistem, dan tentu saja, fungsi tanggal/waktu (juga disebut sebagai fungsi tanggal, waktu, dan interval).

Di bawah ini adalah contoh fungsi tanggal, waktu, dan interval yang dapat Anda gunakan di SQL Server.

Sintaks

Pertama, inilah sintaks yang perlu Anda gunakan setiap kali Anda memanggil fungsi skalar ODBC:

SELECT {fn  [ (,....n) ] }

Dimana <function_name> adalah nama fungsi dan (<argument>,....n) adalah sejumlah argumen opsional.

Jadi hal utama yang harus diingat adalah ketika Anda memanggil fungsi skalar ODBC, Anda harus menyertakan panggilan fungsi di dalam kurung kurawal ({} ) dan awali namanya dengan fn .

Contoh 1 – SEKARANG()

Fungsi ini mengembalikan tanggal dan waktu saat ini sebagai nilai stempel waktu.

PILIH {fn SEKARANG()} SEBAGAI Hasil;

Hasil:

+-------------------------+| Hasil ||-------------------------|| 13-06-2018 21:52:25.667 |+-------------------------+

Contoh 2 – Stempel Waktu, Tanggal, dan Waktu

CURRENT_TIMESTAMP() fungsi mengembalikan tanggal lokal saat ini dan waktu lokal sebagai nilai stempel waktu. Anda juga dapat menggunakan CURRENT_DATE() untuk mengembalikan hanya bagian tanggal, dan/atau CURRENT_TIME() untuk mengembalikan hanya bagian waktu.

SELECT {fn CURRENT_TIMESTAMP()} AS 'Date &Time', {fn CURRENT_DATE()} AS 'Date', {fn CURRENT_TIME()} AS 'Time';

Hasil:

+-------------------------+------------+------- -------+| Tanggal &Waktu | Tanggal | Waktu ||-------------------------+------------+-------- ------|| 13-06-2018 21:57:29.197 | 2018-06-13 | 21:57:29.197 |+-------------------------+------------+---- ----------+

Juga, CURRENT_TIMESTAMP() dan CURRENT_TIME() keduanya menerima argumen opsional untuk menentukan ketepatan detik dari nilai yang dikembalikan.

Contoh:

SELECT {fn CURRENT_TIMESTAMP(3)} SEBAGAI 'Tanggal &Waktu', {fn CURRENT_TIME(6)} SEBAGAI 'Waktu';

Hasil:

+-------------------------+-----------------+| Tanggal &Waktu | Waktu ||-------------------------+-----------------|| 13-06-2018 22:00:59.263 | 22:00:59.263000 |+-------------------------+----------------- +

Dalam contoh ini, CURRENT_TIMESTAMP() mengembalikan presisi detik 3, sementara CURRENT_TIME() mengembalikan presisi detik sebesar 6.

Contoh 3 – CURDATE() dan CURTIME()

Anda dapat menggunakan CURDATE() dan/atau CURTIME() sebagai alternatif dari fungsi tanggal dan waktu di atas:

PILIH {fn CURDATE()} SEBAGAI 'Tanggal', {fn CURTIME()} SEBAGAI 'Waktu';

Hasil:

+-------------+--------------+| Tanggal | Waktu ||------------+-------------|| 2018-06-13 | 22:05:20.013 |+------------+--------------+

Perhatikan bahwa argumen ini tidak menerima argumen apa pun, jadi jika Anda perlu menentukan ketepatan detik, gunakan CURRENT_DATE() dan/atau CURRENT_TIME() sebagai gantinya.

Contoh 4 – Hari dan Minggu

Ada banyak fungsi skalar ODBC untuk mengembalikan bagian tertentu dari nilai tanggal. Fungsi-fungsi ini menerima argumen, yang merupakan ekspresi tanggal untuk mengekstrak bagian tanggal yang diinginkan.

Berikut adalah berbagai fungsi untuk mengembalikan bagian hari dan minggu dari tanggal:

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';SELECT {fn DAYNAME(@date)} AS 'DAYNAME', {fn DAYOFYEAR(@date)} AS 'DAYOFYEAR', {fn DAYOFMONTH(@date)} AS 'DAYOFMONTH', {fn DAYOFWEEK(@date)} AS 'DAYOFWEEK', {fn WEEK(@date)} AS 'WEEK';

Hasil:

+-----------+-------------+-------------+----- --------+--------+| DAYNAME | DAYOFYEAR | DAYOFMONTH | DAYOFWEEK | MINGGU ||-----------+-------------+--------------+------ -------+--------|| Senin | 45 | 14 | 2 | 8 |+-----------+-------------+--------------+------ -------+--------+

Dalam hal ini, kami menetapkan tanggal ke variabel, lalu meneruskan variabel itu ke setiap fungsi. Fungsi tersebut kemudian mengembalikan bagian tanggal yang berlaku.

Contoh 5 – Bulan, Kuartal, dan Tahun

Berikut adalah berbagai fungsi untuk mengembalikan bagian bulan, kuartal, dan tahun dari nilai tanggal/waktu:

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';PILIH {fn YEAR(@date)} AS 'YEAR', {fn MONTH(@date)} AS 'MONTH', {fn MONTHNAME(@date)} SEBAGAI 'MONTHNAME', {fn QUARTER(@date)} SEBAGAI 'QUARTER';

Hasil:

+--------+---------+-------------+-----------+| TAHUN | BULAN | NAMA BULAN | KUARTA ||--------+---------+-------------+-----------|| 2000 | 2 | Februari | 1 |+--------+---------+-------------+-----------+ 

Contoh 6 – Jam, Menit, dan Detik

Berikut adalah berbagai fungsi untuk mengembalikan porsi jam, menit, dan detik dari nilai tanggal/waktu:

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';PILIH {fn JAM(@tanggal)} SEBAGAI 'JAM', {fn MENIT(@tanggal)} SEBAGAI 'MENIT', {fn SECOND(@date)} SEBAGAI 'SECOND';

Hasil:

+--------+----------+----------+| JAM | MENIT | KEDUA ||--------+----------+----------|| 7 | 31 | 58 |+--------+----------+----------+

Contoh 7 – Fungsi EXTRACT()

Ada juga fungsi skalar ODBC yang disebut EXTRACT() , yang memungkinkan Anda mengekstrak berbagai bagian tanggal dari nilai tanggal/waktu. Contoh di bawah.

Tahun, Bulan, dan Hari

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';SELECT {fn EXTRACT(YEAR FROM @date)} AS 'YEAR', {fn EXTRACT(MONTH FROM @date)} AS 'MONTH ', {fn EXTRACT(DAY FROM @date)} AS 'DAY';

Hasil:

+--------+---------+-------+| TAHUN | BULAN | HARI ||--------+---------+-------|| 2000 | 2 | 14 |+--------+---------+-------+

Jam, Menit, dan Detik

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';SELECT {fn EXTRACT(HOUR FROM @date)} AS 'HOUR', {fn EXTRACT(MINUTE FROM @date)} AS 'MINUTE ', {fn EXTRACT(SECOND FROM @date)} SEBAGAI 'SECOND';

Hasil:

+--------+----------+----------+| JAM | MENIT | KEDUA ||--------+----------+----------|| 7 | 31 | 58 |+--------+----------+----------+

Contoh 8 – Fungsi TIMESTAMPADD()

 TIMESTAMPADD() memungkinkan Anda untuk menambahkan nomor tertentu dari interval yang ditentukan (bagian tanggal/waktu) ke nilai tanggal/waktu. Fungsi ini menerima tiga argumen; interval (bagian tanggal/waktu) untuk ditambahkan (misalnya bulan), jumlah bagian yang akan ditambahkan, dan nilai tanggal. Contoh di bawah.

Tahun, Kuartal, Bulan, dan Hari

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';SELECT {fn TIMESTAMPADD(SQL_TSI_YEAR, 21, @date)} SEBAGAI 'SQL_TSI_YEAR', {fn TIMESTAMPADD(SQL_TSI_QUARTER, 21, @date) } AS 'SQL_TSI_QUARTER', {fn TIMESTAMPADD(SQL_TSI_MONTH, 21, @date)} AS 'SQL_TSI_MONTH', {fn TIMESTAMPADD(SQL_TSI_DAY, 21, @date)} AS 'SQL_TSI_DAY';

Hasil:

SQL_TSI_YEAR | 2021-02-14 07:31:58.1234567SQL_TSI_QUARTER | 2005-05-14 07:31:58.1234567SQL_TSI_MONTH | 2001-11-14 07:31:58.1234567SQL_TSI_DAY | 06-03-2000 07:31:58.1234567

Jam, Menit, dan Detik

DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567';SELECT {fn TIMESTAMPADD(SQL_TSI_HOUR, 5, @date)} AS 'SQL_TSI_HOUR', {fn TIMESTAMPADD(SQL_TSI_MINUTE, 5, @date) } SEBAGAI 'SQL_TSI_MINUTE', {fn TIMESTAMPADD(SQL_TSI_SECOND, 5, @date)} AS 'SQL_TSI_SECOND', {fn TIMESTAMPADD(SQL_TSI_FRAC_SECOND, 5, @date)} SEBAGAI 'SQL_TSI_FRAC_SECOND';

Hasil:

SQL_TSI_HOUR | 2000-02-14 12:31:58.1234567SQL_TSI_MINUTE | 2000-02-14 07:36:58.1234567SQL_TSI_SECOND | 2000-02-14 07:32:03.1234567SQL_TSI_FRAC_SECOND | 2000-02-14 07:31:58.1284567

Contoh 9 – Fungsi TIMESTAMPDIFF()

TIMESTAMPDIFF() fungsi mengembalikan perbedaan antara dua nilai tanggal/waktu. Fungsi ini menerima tiga argumen; interval (bagian tanggal/waktu) untuk menghitung selisih (misalnya bulan), tanggal pertama, dan tanggal kedua. Fungsi mengembalikan jumlah interval tanggal pertama lebih besar dari tanggal kedua Contoh di bawah ini.

Tahun, Kuartal, Bulan, Minggu, dan Hari

DECLARE @date1 datetime2 ='2000-02-14 07:31:58.1234567'; MENYATAKAN @date2 datetime2 =TANGGAL(tahun, 1, @tanggal1);SELECT {fn TIMESTAMPDIFF(SQL_TSI_YEAR, @date1, @date2)} SEBAGAI 'SQL_TSI_YEAR', {fn TIMESTAMPDIFF(SQL_TSI_QUARTER, @date1, @date2)} SEBAGAI 'SQL_TSI_QUARTER ', {fn TIMESTAMPDIFF(SQL_TSI_MONTH, @date1, @date2)} SEBAGAI 'SQL_TSI_MONTH', {fn TIMESTAMPDIFF(SQL_TSI_WEEK, @date1, @date2)} SEBAGAI 'SQL_TSI_WEEK', {fn TIMESTAMPDIFF(SQL_TSI_DAY1, @date1, @date2) } SEBAGAI 'SQL_TSI_DAY';

Hasil:

+----------------+-------------------+--------- --------+----------------+---------------+| SQL_TSI_YEAR | SQL_TSI_QUARTER | SQL_TSI_MONTH | SQL_TSI_WEEK | SQL_TSI_DAY ||----------------+-------------------+---------- -------+----------------+---------------|| 1 | 4 | 12 | 52 | 366 |+----------------+------------+---------- -------+----------------+---------------+

Jam, Menit, dan Detik

DECLARE @date1 datetime2 ='2000-02-14 07:31:58.1234567'; MENYATAKAN @date2 datetime2 =DATEADD(hari, 1, @date1);SELECT {fn TIMESTAMPDIFF(SQL_TSI_HOUR, @date1, @date2)} AS 'SQL_TSI_HOUR', {fn TIMESTAMPDIFF(SQL_TSI_MINUTE, @date1, @date2)} SEBAGAI 'SQL_TSI_MINUTE ', {fn TIMESTAMPDIFF(SQL_TSI_SECOND, @date1, @date2)} AS 'SQL_TSI_SECOND', {fn TIMESTAMPDIFF(SQL_TSI_FRAC_SECOND, @date1, @date2)} SEBAGAI 'SQL_TSI_FRAC_SECOND';

Hasil:

+----------------+------------------+---------- --------+-----------------------+| SQL_TSI_HOUR | SQL_TSI_MINUTE | SQL_TSI_SECOND | SQL_TSI_FRAC_SECOND ||----------------+------------------+----------- -------+-----------------------|| 24 | 1440 | 86400 | 8640000 |+----------------+------------------+----------- -------+-----------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Pekerjaan Agen SQL Server menggunakan T-SQL

  2. Gabungkan banyak baris menjadi satu string teks dengan pengelompokan

  3. Sisipkan SQL Server jika tidak ada praktik terbaik

  4. Buat Tampilan di SQL Server 2017

  5. Cara melihat riwayat kueri di SQL Server Management Studio