Bagikan melalui


Fungsi Waktu, Tanggal, dan Interval

Tabel berikut mencantumkan fungsi waktu dan tanggal yang disertakan dalam kumpulan fungsi skalar ODBC. Aplikasi dapat menentukan fungsi waktu dan tanggal mana yang didukung oleh driver dengan memanggil SQLGetInfo dengan jenis informasi SQL_TIMEDATE_FUNCTIONS.

Argumen yang ditandai sebagai timestamp_exp bisa menjadi nama kolom, hasil fungsi skalar lain, atau ODBC-time-escape, ODBC-date- escape, atau ODBC-timestamp-escape, di mana jenis data yang mendasarinya dapat direpresentasikan sebagai SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE, atau SQL_TYPE_TIMESTAMP.

Argumen yang ditandai sebagai date_exp dapat berupa nama kolom, hasil fungsi skalar lain, atau odbc-date-escape atau ODBC-timestamp-escape, di mana jenis data yang mendasarinya dapat direpresentasikan sebagai SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE, atau SQL_TYPE_TIMESTAMP.

Argumen yang ditandai sebagai time_exp bisa menjadi nama kolom, hasil fungsi skalar lain, atau ODBC-time-escape atau ODBC-timestamp-escape, di mana jenis data yang mendasarinya dapat direpresentasikan sebagai SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, atau SQL_TYPE_TIMESTAMP.

Fungsi skalar berwaktu CURRENT_DATE, CURRENT_TIME, dan CURRENT_TIMESTAMP telah ditambahkan di ODBC 3.0 untuk menyelaraskan dengan SQL-92.

Fungsi Deskripsi
CURRENT_DATE( ) (ODBC 3.0) Mengembalikan tanggal saat ini.
CURRENT_TIME[(presisi waktu)] (ODBC 3.0) Mengembalikan waktu lokal saat ini. Argumen presisi waktu menentukan presisi detik dari nilai yang dikembalikan.
CURRENT_TIMESTAMP
[(timestamp-prescision)] (ODBC 3.0)
Mengembalikan tanggal lokal saat ini dan waktu lokal sebagai nilai tanda waktu. Argumen presisi tanda waktu menentukan presisi detik dari tanda waktu yang dikembalikan.
CURDATE( ) (ODBC 1.0) Mengembalikan tanggal saat ini.
CURTIME( ) (ODBC 1.0) Mengembalikan waktu lokal saat ini.
DAYNAME(date_exp) (ODBC 2.0) Mengembalikan string karakter yang berisi nama khusus sumber data hari itu (misalnya, Minggu hingga Sabtu atau Minggu. melalui Sat. untuk sumber data yang menggunakan bahasa Inggris, atau Sonntag melalui Samstag untuk sumber data yang menggunakan bahasa Jerman) untuk bagian hari date_exp.
DAYOFMONTH(date_exp) (ODBC 1.0) Mengembalikan hari dalam sebulan berdasarkan bidang bulan dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-31.
DAYOFWEEK(date_exp) (ODBC 1.0) Mengembalikan hari dalam seminggu berdasarkan bidang minggu dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-7, di mana 1 mewakili Hari Minggu.
DAYOFYEAR(date_exp) (ODBC 1.0) Mengembalikan hari dalam setahun berdasarkan bidang tahun dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-366.
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) Mengembalikan bagian bidang ekstrak dari extract-source. Argumen sumber ekstrak adalah ekspresi tanggalwaktu atau interval. Argumen extract-field bisa menjadi salah satu kata kunci berikut:

SETAHUN HARI SEBULAN JAM DETIK

Presisi nilai yang dikembalikan ditentukan implementasi. Skalanya adalah 0 kecuali SECOND ditentukan, dalam hal ini skalanya tidak kurang dari presisi detik pecahan dari bidang sumber ekstrak.
HOUR(time_exp) (ODBC 1.0) Mengembalikan jam berdasarkan bidang jam dalam time_exp sebagai nilai bilangan bulat dalam rentang 0-23.
MINUTE(time_exp) (ODBC 1.0) Mengembalikan menit berdasarkan bidang menit dalam time_exp sebagai nilai bilangan bulat dalam rentang 0-59.
MONTH(date_exp) (ODBC 1.0) Mengembalikan bulan berdasarkan bidang bulan dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-12.
MONTHNAME(date_exp) (ODBC 2.0) Mengembalikan string karakter yang berisi nama khusus sumber data bulan (misalnya, Januari hingga Desember atau Jan. hingga Des. untuk sumber data yang menggunakan bahasa Inggris, atau Januari melalui Dezember untuk sumber data yang menggunakan bahasa Jerman) untuk bagian bulan date_exp.
NOW( ) (ODBC 1.0) Mengembalikan tanggal dan waktu saat ini sebagai nilai tanda waktu.
QUARTER(date_exp) (ODBC 1.0) Mengembalikan kuartal dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-4, di mana 1 mewakili 1 Januari hingga 31 Maret.
SECOND(time_exp) (ODBC 1.0) Mengembalikan yang kedua berdasarkan bidang kedua dalam time_exp sebagai nilai bilangan bulat dalam rentang 0-59.
TIMESTAMPADD(interval, integer_exp, timestamp_exp) (ODBC 2.0) Mengembalikan tanda waktu yang dihitung dengan menambahkan interval integer_exp interval jenis ke timestamp_exp. Nilai interval yang valid adalah kata kunci berikut:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

di mana detik pecahan dinyatakan dalam miliaran detik. Misalnya, pernyataan SQL berikut mengembalikan nama setiap karyawan dan tanggal ulang tahun satu tahunnya:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Jika timestamp_exp adalah nilai waktu dan interval menentukan hari, minggu, bulan, kuartal, atau tahun, bagian tanggal timestamp_exp diatur ke tanggal saat ini sebelum menghitung tanda waktu yang dihasilkan.

Jika timestamp_exp adalah nilai tanggal dan interval menentukan detik pecahan, detik, menit, atau jam, bagian waktu timestamp_exp diatur ke 0 sebelum menghitung tanda waktu yang dihasilkan.

Aplikasi menentukan interval mana yang didukung sumber data dengan memanggil SQLGetInfo dengan opsi SQL_TIMEDATE_ADD_INTERVALS.
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) (ODBC 2.0) Mengembalikan jumlah bilangan bulat interval jenis yang timestamp_exp2 lebih besar dari timestamp_exp1. Nilai interval yang valid adalah kata kunci berikut:

SQL_TSI_FRAC_SECOND

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

di mana detik pecahan dinyatakan dalam miliaran detik. Misalnya, pernyataan SQL berikut mengembalikan nama setiap karyawan dan jumlah tahun dia telah dipekerjakan:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

Jika ekspresi tanda waktu adalah nilai waktu dan interval menentukan hari, minggu, bulan, kuartal, atau tahun, bagian tanggal tanda waktu tersebut diatur ke tanggal saat ini sebelum menghitung perbedaan antara tanda waktu.

Jika ekspresi tanda waktu adalah nilai tanggal dan interval menentukan detik pecahan, detik, menit, atau jam, bagian waktu tanda waktu tersebut diatur ke 0 sebelum menghitung perbedaan antara tanda waktu.

Aplikasi menentukan interval mana yang didukung sumber data dengan memanggil SQLGetInfo dengan opsi SQL_TIMEDATE_DIFF_INTERVALS.
WEEK(date_exp) (ODBC 1.0) Mengembalikan minggu dalam setahun berdasarkan bidang minggu dalam date_exp sebagai nilai bilangan bulat dalam rentang 1-53.
YEAR(date_exp) (ODBC 1.0) Mengembalikan tahun berdasarkan bidang tahun dalam date_exp sebagai nilai bilangan bulat. Rentang ini bergantung pada sumber data.