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

3 Cara Mendapatkan Hari Pertama Bulan Ini di SQL Server

Di bawah ini adalah tiga opsi untuk menggunakan T-SQL untuk mengembalikan hari pertama setiap bulan di SQL Server.

Ini bisa menjadi hari pertama bulan ini, atau hari pertama dalam sebulan berdasarkan tanggal tertentu.

Opsi 1

Salah satu caranya adalah seperti ini:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(dd, -( DAY( @date ) -1 ), @date);

Hasil:

2035-10-01

Ini melibatkan penggunaan beberapa fungsi T-SQL untuk melakukan pergeseran tanggal untuk mengembalikan tanggal ke awal bulan.

Untuk informasi lebih lanjut tentang DATEADD() dan DAY() fungsi, lihat DATEADD() Contoh di SQL Server dan DAY() Contoh di SQL Server.

Opsi 2

Berikut opsi lain untuk mendapatkan hari pertama setiap bulan:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(month, DATEDIFF(month, 0, @date), 0);

Hasil:

2035-10-01 00:00:00.000

Di sini, kami memasukkan DATEDIFF() fungsi ke dalam perhitungan kami.

Meskipun kami mendeklarasikan variabel awal sebagai date nilai, hasilnya adalah datetime nilai. Kita dapat menggunakan CONVERT() atau CAST() untuk mengonversi hasil menjadi date nilai:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT CAST(DATEADD(month, DATEDIFF(month, 0, @date), 0) AS date);

Hasil:

2035-10-01

Opsi 3

Ini opsi lain:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

Hasil:

2035-10-01 00:00:00.000

Mirip dengan opsi 2, hasilnya adalah datetime nilai, tapi kali ini karena kami mendeklarasikan variabel sebagai datetime nilai. Namun, kami dapat memberikan perlakuan yang sama untuk mengubahnya menjadi date nilai:

DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date - DAY( @date ) + 1 AS date);

Hasil:

2035-10-01

Alasan kami tidak mendeklarasikan variabel sebagai date nilai karena itu akan menghasilkan kesalahan:

DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date - DAY( @date ) + 1;

Hasil:

Msg 206, Level 16, State 2, Line 3
Operand type clash: date is incompatible with int

Ini karena kami mencoba menambahkan bilangan bulat ke date nilai, yang tidak berfungsi. Namun, menambahkan bilangan bulat ke datetime value berfungsi, dan itulah sebabnya kami mendeklarasikan variabel sebagai datetime .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bergabung dengan beberapa tabel di SQL

  2. Pratinjau publik pertama SQL Server 2019 :CTP 2.0

  3. Cara Mengganti Nama Nama Tabel di SQL Server

  4. Dapatkan hari terakhir dalam sebulan di SQL

  5. Menambahkan beberapa variabel berparameter ke database di c#