Rumah > pangkalan data > tutorial mysql > Mengapa Pelayan SQL Kehilangan Milisaat Apabila Memasukkan Nilai Datetime?

Mengapa Pelayan SQL Kehilangan Milisaat Apabila Memasukkan Nilai Datetime?

DDD
Lepaskan: 2025-01-13 08:32:44
asal
572 orang telah melayarinya

Why Does SQL Server Lose Milliseconds When Inserting Datetime Values?

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>
Salin selepas log masuk

Selepas itu menggunakan pertanyaan SELECT * FROM TESTTABLE WITH (NOLOCK), nilai lajur DateField mungkin muncul sebagai:

<code>2009-04-03 15:41:27.*377*</code>
Salin selepas log masuk

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:

  • Medan angka tersuai: Simpan cap masa sebagai medan angka tersuai dan bina semula apabila diperoleh semula.
  • Storan Rentetan: Simpan cap masa sebagai rentetan dalam format yang diketahui.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan