Banyak reka bentuk pangkalan data menyimpan maklumat tarikh dan masa merentas dua lajur berasingan. Panduan ini menerangkan cara menggabungkannya dengan cekap menjadi satu lajur datetime
dalam MS SQL Server.
Dengan mengandaikan lajur "Tarikh" anda hanya mengandungi nilai tarikh (bahagian masa adalah sifar) dan lajur "Masa" anda hanya mengandungi nilai masa (bahagian tarikh ialah 1 Januari 1900), operasi penambahan mudah yang mengejutkan berfungsi:
<code class="language-sql">SELECT CombinedDateTime = MyDate + MyTime FROM MyTable;</code>
Tambahan yang kelihatan mudah ini memanfaatkan perwakilan dalaman nilai datetime
dalam versi SQL Server yang lebih lama. Setiap nilai datetime
disimpan sebagai dua integer 4-bait: satu untuk tarikh dan satu untuk masa. Menambahnya akan menghasilkan gabungan bitwise, menghasilkan satu nilai datetime
.
Untuk SQL Server 2008 dan kemudian, jenis data DATE
dan TIME
telah diperkenalkan, bersama DATETIME
dan DATETIME2
. Penambahan langsung tidak lagi terpakai. Untuk menggabungkan DATE
dan TIME
dalam versi yang lebih baharu ini, penghantaran eksplisit ke DATETIME
adalah penting:
<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>
Selain itu, penambahan terus nilai datetime2
boleh menyebabkan kehilangan ketepatan. Untuk memastikan ketepatan, tukar kepada DATETIME
sebelum menggabungkan:
<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>
Pendekatan ini menjamin gabungan yang tepat dan boleh dipercayai bagi komponen tarikh dan masa anda ke dalam satu lajur datetime
, tanpa mengira versi SQL Server anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Lajur Tarikh dan Masa Berasingan menjadi Lajur DateTime Tunggal dalam MS SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!