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

SQL Pilih Ulang Tahun Mendatang

Catatan:Saya telah mengedit ini untuk memperbaiki apa yang saya yakini sebagai bug yang signifikan. Versi yang saat ini diposting berfungsi untuk saya.

Ini akan berfungsi setelah Anda mengubah nama bidang dan tabel agar sesuai dengan database Anda.

SELECT 
  BRTHDATE AS BIRTHDAY
 ,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25) AS AGE_NOW
 ,FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25) AS AGE_ONE_WEEK_FROM_NOW
FROM 
  "Database name".dbo.EMPLOYEES EMP
WHERE 1 = (FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()+7) / 365.25))
          -
          (FLOOR(DATEDIFF(dd,EMP.BRTHDATE,GETDATE()) / 365.25))

Pada dasarnya, ini mendapatkan # hari dari ulang tahun mereka hingga sekarang, dan membaginya dengan 365 (untuk menghindari masalah pembulatan yang muncul saat Anda mengonversi langsung ke tahun).

Kemudian didapat # hari dari ulang tahun mereka menjadi satu minggu dari sekarang, dan membaginya dengan 365 untuk mendapatkan usia mereka seminggu dari sekarang.

Jika ulang tahun mereka dalam waktu seminggu, maka perbedaan antara kedua nilai tersebut adalah 1. Jadi ini mengembalikan semua catatan tersebut.



  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 Menemukan Lokasi File Data dan File Log di SQL Server

  2. Konversi 'datetime' menjadi 'datetimeoffset' di SQL Server (Contoh T-SQL)

  3. Gunakan FILE_IDEX() untuk Mengembalikan ID File Database di SQL Server

  4. Login gagal untuk pengguna 'DOMAIN\MACHINENAME$'

  5. Mengapa 1899-12-30 tanggal nol di Access/SQL Server, bukan 31/12?