[研究]SQL Servr 2019有日期欄位可以記錄到 毫秒 ?
2025-11-21
SQL Servr 2019有日期欄位可以記錄到 毫秒 ?
| 資料型別 | 格式範例 | 精度 | 範圍 | 儲存大小 | 註解 |
|---|---|---|---|---|---|
| datetime | 2025-11-21 16:45:32.123 | 0.00333 秒(約 3.33 毫秒) | 1753-01-01 ~ 9999-12-31 | 8 bytes | 只能記錄到 1/300 秒,精度非完全毫秒 |
| smalldatetime | 2025-11-21 16:45 | 1 分鐘 | 1900-01-01 ~ 2079-06-06 | 4 bytes | 精度只有分鐘,不支援毫秒 |
| datetime2(n) | 2025-11-21 16:45:32.1234567 | 0 ~ 7 位小數秒;n=3 可到毫秒 預設n為7 |
0001-01-01 ~ 9999-12-31 | 6~8 bytes (依 n 而定) | 精度可自訂,推薦取代 datetime |
| date | 2025-11-21 | N/A | 0001-01-01 ~ 9999-12-31 | 3 bytes | 只有日期,不含時間 |
| time(n) | 16:45:32.1234567 | 0 ~ 7 位小數秒 | 00:00:00.0000000 ~ 23:59:59.9999999 | 3~5 bytes | 只記錄時間,不含日期 |
| datetimeoffset(n) | 2025-11-21 16:45:32.123 +08:00 | 0 ~ 7 位小數秒 | 0001-01-01 ~ 9999-12-31 | 8~10 bytes | 包含時區偏移,精度可自訂 |
重點:
- 如果你要毫秒精度,datetime2(3) 最合適(最多到 .123 毫秒),且建議取代舊的 datetime。
- datetime 的精度有限,雖然看起來有三位小數,但實際誤差約 ±3.33 毫秒。
- datetimeoffset 適合需要同時記錄時區的場景。
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
DeleteCommand="DELETE FROM [Table5] WHERE [Id] = @Id"
InsertCommand="INSERT INTO [Table5] ([MyDatetime], [MyDatetime2]) VALUES (@MyDatetime, @MyDatetime2)"
SelectCommand="SELECT * FROM [Table5]"
UpdateCommand="UPDATE [Table5] SET [MyDatetime] = @MyDatetime, [MyDatetime2] = @MyDatetime2 WHERE [Id] = @Id">
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="MyDatetime" Type="DateTime" />
<asp:Parameter DbType="DateTime2" Name="MyDatetime2" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="MyDatetime" Type="DateTime" />
<asp:Parameter DbType="DateTime2" Name="MyDatetime2" />
<asp:Parameter Name="Id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
</form>
</body>
</html>
|
(完)
沒有留言:
張貼留言