Saya tidak dapat menemukan solusi yang memberikan hari pertama dan terakhir bulan sebelumnya dengan cap waktu. Semoga ini bisa membantu orang lain. Jika sudah ada solusi untuk masalah ini saya mohon maaf.
Inilah solusinya.
SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) - 2, 0) as FirtDayPreviousMonthWithTimeStamp,
DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp
Ini akan mengembalikan yang berikut jika currentdate = '2012-7-31'
hasil: 2012-06-01 00:00:00.000 2012-06-30 23:59:59.000
Ini akan mengembalikan yang berikut jika currentdate = '2012-1-1'
hasil: 2011-12-01 00:00:00.000 2011-12-31 23:59:59.000
sql-server
datetime
Jay S.
sumber
sumber
Jawaban:
sumber
-1
diDATEDIFF
dalamnya melempar dan kesalahan ituThe arguments to the following function are not valid: DATEDIFF
Hari Pertama Minggu Ini.
Hari Terakhir Minggu Ini.
Hari Pertama Minggu Lalu.
Hari Terakhir Minggu Lalu.
Hari Pertama Minggu Depan.
Hari Terakhir Minggu Depan.
Hari Pertama Bulan Ini.
Hari Terakhir Bulan Ini.
Dalam Contoh ini, tanggal Bekerja Hanya pada 31. dan hari yang tersisa tidak.
Hari Pertama Bulan Lalu.
Hari Terakhir Bulan Lalu.
Hari Pertama Bulan Berikutnya.
Hari Terakhir Bulan Depan.
Hari Pertama Tahun Ini.
Hari Terakhir Tahun Ini.
Hari Pertama Tahun Lalu.
Hari Terakhir Tahun Lalu.
Hari Pertama Tahun Depan.
Hari Terakhir Tahun Depan.
sumber
sumber
Larutan
Untuk benar-benar menghitung nilai yang Anda minta, sertakan yang berikut ini di SQL Anda.
Ketahuilah bahwa itu harus ditempel lebih awal dari pernyataan apa pun yang mereferensikan parameter, tetapi sejak saat itu Anda dapat merujuk @FirstDayOfLastMonth dan @LastDayOfLastMonth di kode Anda.
Contoh
Mari kita lihat beberapa kode beraksi:
Jalankan kode di atas untuk menghasilkan output berikut:
Catatan: Ingatlah bahwa tanggal hari ini untuk saya adalah 12 September 2016 .
Parameter tanggal umum
Apakah Anda menginginkan lebih?
Untuk menyiapkan rentang yang lebih lengkap dari parameter terkait tanggal praktis, sertakan yang berikut ini di SQL Anda:
Akan lebih masuk akal untuk memasukkannya lebih awal, sebaiknya di bagian atas prosedur atau kueri SQL Anda.
Setelah dideklarasikan, parameter dapat direferensikan di mana saja dalam kode Anda, sebanyak yang Anda butuhkan.
Contoh
Mari kita lihat beberapa kode beraksi:
Jalankan kode di atas untuk menghasilkan output berikut:
Jika negara Anda hilang, itu karena saya tidak tahu kode untuk itu. Akan sangat membantu dan dihargai jika Anda dapat mengedit jawaban ini dan menambahkan kolom baru untuk negara Anda.
Terima kasih sebelumnya.
Catatan: Ingatlah bahwa tanggal hari ini untuk saya adalah 12 September 2016 .
Referensi
Untuk bacaan lebih lanjut tentang standar tanggal internasional ISO8601, ikuti tautan ini:
Untuk bacaan lebih lanjut tentang standar tanggal internasional ODBC, ikuti tautan ini:
Untuk melihat daftar format tanggal tempat saya bekerja, ikuti tautan ini:
Untuk membaca lebih lanjut tentang tipe data DATETIME, ikuti tautan ini:
sumber
sumber
Dari SQL2012, ada fungsi baru yang disebut
EOMONTH
. Menggunakan fungsi ini pada hari pertama dan terakhir bulan lalu dapat ditemukan dengan mudah.sumber
Saya telah menggunakan logika berikut dalam laporan SSRS.
sumber
Anda bisa mendapatkan hari pertama dan terakhir bulan sebelumnya (dengan stempel waktu) di SQL Server dengan menjalankan
sumber
Ambil beberapa tanggal dasar yang merupakan tanggal 31 suatu bulan misalnya '20011231'. Kemudian gunakan
prosedur berikut (saya telah memberikan 3 contoh identik di bawah ini, hanya nilai @dt yang berbeda).
sumber
Berikut cara yang cukup lurus ke depan dan dinamis. Untuk hari terakhir bulan lalu, kurangi hari numerik saat ini dari tanggal hari ini. Untuk hari pertama bulan lalu, gunakan kode yang sama, cukup ulangi pengurangan hari numerik dari hasil sebelumnya dan tambahkan 1.
sumber
Untuk mendapatkan kencan pertama bulan lalu:
Untuk mendapatkan tanggal terakhir bulan lalu:
sumber
Saya belum melihat solusi ini disajikan; ini adalah preferensi saya untuk keterbacaannya yang lebih sederhana:
sumber
Ini adalah cara termudah yang saya tahu untuk mendapatkan hari pertama dari bulan sebelumnya:
Langkah 1: Pindahkan data ke Postgres
Langkah 2:
sumber