Rumah >pangkalan data >tutorial mysql >Mengapa Pelayan SQL Kehilangan Milisaat Apabila Memasukkan Nilai Datetime?
Isu ketepatan tarikh dan masa SQL Server
Apabila memasukkan nilai ke dalam lajur datetime dalam SQL Server, anda mungkin mengalami kehilangan milisaat yang tidak dijangka. Contohnya, pertanyaan berikut:
<code class="language-sql">BEGIN INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'}); SELECT SCOPE_IDENTITY() END</code>
Selepas itu menggunakan pertanyaan SELECT * FROM TESTTABLE WITH (NOLOCK)
, nilai lajur DateField mungkin muncul sebagai:
<code>2009-04-03 15:41:27.*377*</code>
Penjelasan perbezaan dalam ketepatan milisaat
Kehilangan milisaat yang ketara ini disebabkan oleh had storan SQL Server. Ketepatan masa SQL Server adalah lebih kurang 1/300 saat, dan selang ini sentiasa jatuh pada 0, 3 dan 7 milisaat. Oleh itu, dalam contoh di atas, nilai dibundarkan ke bawah kepada selang 3 milisaat yang terdekat, menghasilkan akhiran .377 yang diperhatikan.
Memenuhi Cabaran Ketepatan Milisaat
Jika ketepatan milisaat adalah kritikal, tiada penyelesaian mudah. Penyelesaian yang dicadangkan termasuk:
Walaupun kaedah ini menambah kerumitan tambahan, kaedah ini boleh memberikan ketepatan yang diperlukan apabila ketepatan milisaat benar-benar diperlukan.
Atas ialah kandungan terperinci Mengapa Pelayan SQL Kehilangan Milisaat Apabila Memasukkan Nilai Datetime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!