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!