Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

DATEDIFF

Permisi min mau nanya..
saya mau mencari mencari selisih tgl masuk karyawan dengan tgl sekarang(30 Maret 2017) di SQL SERVER

rumus saya datediff(YYYY,2001-04-02,getdate())

tp kenapa hasilnya 16 tahun?
padahal saya aplikasikan ke excel hasilnya 15 tahun.
yg saya inginkan menampilkan 16 tahun kalo tgl sudah masuk 2017-04-02.
apakah ada trik terselubung untuk SQL SERVER ?
Terimakasih

Tanggapan

  • edited March 30
    "trik terselubung"? :o

    sepertinya di SQL SERVER fungsi datediff menghitung berdasarkan identitas tanggal .
    contoh :
    SELECT datediff(MONTH,'2017-02-28','2017-03-02'); -- hasil  1 seharusnya 0 bulan
    SELECT datediff(MONTH,'2017-03-01','2017-03-02'); -- hasil 0
     
    SELECT datediff(YY,'2016-12-31','2017-03-02'); -- hasil 1 seharusnya 0 tahun
    SELECT datediff(YY,'2017-01-01','2017-03-02'); -- hasil 0


    Untuk kasus diatas,
    SELECT datediff(MONTH,'2001-04-02',getdate())/12;         -- hasil 15 tahun
    SELECT datediff(MONTH,'2001-04-02','2017-04-02')/12; -- hasil 16 tahun

  • edited March 30
    Sebelumnya terima kasih sudah ngasih jawaban gan. tapi kalo pake cara agan masih kurang tepat hasilnya.
    SELECT datediff(MONTH,'2016-04-02','2017-04-01')/12 --> hasilnya 1 tahun seharusnya 0

    kalo menggunakan identitas hari juga kurang tepat hasilnya. karena jml hari untuk setiap tahun tidak sama.
  • edited March 30
    a
Sign In or Register to comment.