Dengan menggunakan SQL Server 2000, bagaimana saya bisa mendapatkan tanggal pertama dan terakhir tahun ini?
Output yang Diharapkan:
01/01/2012
dan 31/12/2012
sumber
Dengan menggunakan SQL Server 2000, bagaimana saya bisa mendapatkan tanggal pertama dan terakhir tahun ini?
Output yang Diharapkan:
01/01/2012
dan 31/12/2012
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 tengah malam pada awal 31 Desember. Ini kurang dari 24 jam dari saat terakhir tahun ini. Jika Anda ingin memasukkan waktu yang mungkin terjadi pada 31 Desember, maka Anda harus membandingkan dengan tahun pertama tahun depan, dengan <
perbandingan. Atau Anda dapat membandingkan dengan beberapa milidetik terakhir pada 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
Detail Teknis
Ini bekerja dengan mencari tahu jumlah tahun sejak 1900 dengan DATEDIFF(yy, 0, GETDATE())
dan kemudian menambahkannya ke tanggal nol = Jan 1, 1900. Ini dapat diubah untuk bekerja untuk tanggal sewenang-wenang 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
Berikut cara yang cukup sederhana;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
Itu tidak seksi, tapi berhasil.
Anda bisa mendapatkan tahun ini menggunakan
DATEPART
fungsi, dari tanggal saat ini diperoleh dengan menggunakangetUTCDate()
sumber
DATETIME
alih-alih string dan jelas itu mungkin tidak cocok dengan output yang diharapkan sesuai pertanyaan.yyyyMMdd
tidak ambigu.cukup tulis: -
tanggal mulai tahun ini.
sumber
Setiap tahun ada tanggal 1 sebagai tanggal 1 dan tanggal 31 sebagai tanggal terakhir yang harus Anda lakukan hanya melampirkan tahun pada hari dan bulan itu misalnya: -
sumber
Untuk mendapatkan hari pertama dan terakhir tahun ini, seseorang dapat menggunakan
CONCAT
fungsinya. Nilai yang dihasilkan dapat diberikan ke semua jenis.sumber
Untuk tanggal mulai tahun ini:
Untuk tanggal akhir tahun ini:
sumber
Cara lain: (Sejak SQL Server 2012)
sumber
Lihat yang ini:
sumber
sumber
sumber
Sepertinya Anda menarik dalam melakukan operasi semuanya untuk tahun tertentu, jika memang demikian, saya akan merekomendasikan untuk menggunakan fungsi YEAR () seperti ini:
Hal yang sama berlaku untuk DAY () dan MONTH () . Mereka juga tersedia untuk varian MySQL / MariaDB dan diperkenalkan di SQL Server 2008 (jadi tidak untuk 2000 tertentu).
sumber
sumber
Di Microsoft SQL Server (T-SQL) ini dapat dilakukan sebagai berikut
CURRENT_TIMESTAMP - mengembalikan tanggal sql server pada saat eksekusi kueri.
TAHUN - mendapatkan bagian tahun dari stempel waktu saat ini.
STR , LTRIM - kedua fungsi ini diterapkan sehingga kita dapat mengubahnya menjadi varchar yang dapat digabungkan dengan prefiks yang kita inginkan (dalam hal ini tanggal pertama atau tanggal terakhir tahun itu). Untuk alasan apa pun, hasil yang dihasilkan oleh fungsi YEAR memiliki spasi awalan. Untuk memperbaikinya kami menggunakan fungsi LTRIM yang merupakan trim kiri.
sumber
Jika mencapai tanggal 1 Jan Anda mungkin masih tanggal tahun terakhir.
sumber
Coba ini:
sumber
Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
--- Demo Lalmuni ---
--- masukkan nilai ---
sumber