簡體   English   中英

在 C# 中存儲時間的類型和在 T-SQL 中的相應類型

[英]Type to store time in C# and corresponding type in T-SQL

我想知道如何在 C# 和 T-SQL 中存儲時間 我知道它們都提供了DateTime類型,但我只需要存儲一個time 例如:

var startTime = 9PM;
var endTime = 10PM;

然后從數據庫中存儲/檢索這些值。 提前致謝。

弗朗切斯科

C#

是否使用 C# 中的DateTimeTimeSpan類型來存儲9 PM取決於您的喜好。 就個人而言,我會使用DateTime ,將日期組件留空,因為這在語義上更接近您想要的。 TimeSpan旨在保存時間間隔,例如“21 小時”。)

該文檔支持這兩個選項。 這是來自TimeSpan 的文檔

TimeSpan 結構也可用於表示一天中的時間,但前提是時間與特定日期無關。

另一方面,MSDN 文章在 DateTime、DateTimeOffset 和 TimeZoneInfo 之間選擇提到以下內容:

DateTime 結構適用於執行以下操作的應用程序:
* 僅使用日期。
* 僅使用時間。
[...]


T-SQL

SQL 服務器具有time數據類型。

在 C# 中,沒有一個類型只能保存一次。 TimeSpan ,但它旨在保留一段時間,而不是DateTime的真正組成部分(即小時和分鍾)。

從 SQL Server 2008 開始,有一個time類型(使用日期和時間數據只存儲一個時間組件。

編輯:起初誤讀了您的問題。 TimeSpan正是您正在尋找的,它可以使用 SQL 2K8 存儲在time類型中。

在 C# 中,如果您只想存儲時間間隔,您可能想要使用TimeSpan結構。 但是,您似乎希望存儲一個開始時間和一個結束時間,這需要存儲兩個值。 因此,您可以使用兩個TimeSpans (例如,基於從午夜開始的分鍾數來表示時間),或者您可以只使用兩個DateTime值並丟棄日期組件。

如前所述,SQL Server 2008 具有Time數據類型,但這在只有DateTime的早期版本中不可用。 您也可以只存儲一個表示午夜過后的分鍾數的Int ,它可以輕松轉換為TimeSpanTimeSpan interval = TimeSpan.FromMinutes(60) )。

c# 中的時間跨度是您操縱時間間隔的方式。 與其他海報所說的相反,我認為時間數據類型對於在 SQL 中存儲時間間隔是不正確的,除非您實際上想要存儲開始時間和結束時間而不是時間間隔(即在您的示例中為 1 小時) . 它用於存儲一天中的時間,有點像 DateTime 但沒有日期。 當我想在 SQL 中存儲一個時間間隔時,我只使用一個 int 然后讓它代表一個適合我想要做的時間單位(例如分鍾、秒、毫秒等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM