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

Bagaimana cara mendapatkan tanggal pertama dan terakhir tahun ini?

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

Kueri di atas memberikan nilai waktu-tanggal untuk tengah malam pada awal 31 Desember. Ini kurang lebih 24 jam dari momen terakhir tahun ini. Jika Anda ingin memasukkan waktu yang mungkin terjadi pada tanggal 31 Desember, maka Anda harus membandingkan dengan tanggal pertama tahun berikutnya, dengan < perbandingan. Atau Anda dapat membandingkan dengan beberapa milidetik terakhir tahun ini, tetapi ini masih menyisakan celah jika Anda menggunakan sesuatu selain DATETIME (seperti DATETIME2):

SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

Periode Lainnya

Pendekatan ini memiliki dua aspek yang bagus:kinerja yang baik dan dapat dengan mudah diubah untuk periode lain dengan mengganti kedua kemunculan yy (=tahun) dengan string yang berbeda:

yy, yyyy    year
qq, q       quarter
mm, m       month
wk, ww      week 

(Hati-hati dengan minggu:hari mulai tergantung pada pengaturan server.)

Detail Teknologi

Ini bekerja dengan mencari tahu jumlah tahun sejak 1900 dengan DATEDIFF(yy, 0, GETDATE()) dan kemudian menambahkannya ke tanggal nol =1 Jan 1900. Ini dapat diubah agar berfungsi untuk tanggal arbitrer dengan mengganti GETDATE() bagian atau tahun sewenang-wenang dengan mengganti DATEDIFF(...) fungsi dengan "Tahun - 1900."

 SELECT
   DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
   DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengubah Pengaturan Konfigurasi untuk Database Mail di SQL Server (T-SQL)

  2. Masukkan semua data datagridview ke database sekaligus

  3. Kesalahan JDBC SQL Server di Java 8:Pengandar tidak dapat membuat sambungan aman ke SQL Server dengan menggunakan enkripsi Secure Sockets Layer (SSL)

  4. Bagaimana cara menyiram buffer PRINT di TSQL?

  5. Mengotomatiskan Database Model Tabular Processing of Analysis Services (SSAS) di SQL Server