Apabila menggunakan SQL Server untuk memproses cap masa, adalah penting untuk memahami had ketepatannya.
Pertimbangkan struktur jadual berikut:
<code class="language-sql">CREATE TABLE [TESTTABLE] ( [ID] [int] IDENTITY(1,1) NOT NULL, [DateField] [datetime] NULL, [StringField] [varchar](50), [IntField] [int] NULL, [BitField] [bit] NULL )</code>
Laksanakan kod 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>
Tingkah laku yang diharapkan ialah menyimpan cap masa dengan ketepatan milisaat penuh. Walau bagaimanapun, apabila menanyakan jadual menggunakan pernyataan berikut:
<code class="language-sql">select * from testtable with (NOLOCK)</code>
Anda mungkin perasan bahawa lajur DateField memaparkan:
<code>2009-04-03 15:41:27.*377*</code>
SQL Server hanya menyimpan kira-kira 1/300 saat. Nilai masa ini sentiasa jatuh pada 0, 3, dan 7 milisaat. Contohnya:
<code>00:00:00.000<br></br> 00:00:00.003<br></br> 00:00:00.007<br></br> 00:00:00.010<br></br> 00:00:00.013<br></br> ...</code>
Jika ketepatan milisaat adalah kritikal, tiada penyelesaian langsung dalam jenis data asli SQL Server. Anda boleh mempertimbangkan kaedah berikut:
Atas ialah kandungan terperinci Sejauh manakah Ketepatan Ketepatan Milisaat dalam Jenis Data `datetime` SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!