2014-04-21 144 views
-2

我有一個像下面這樣的SQL表。SQL日期時間數據

SELECT * FROM [icom].[dbo].[Periods] 

此表給我指定的期間。例如,第一階段從8:00開始,在上午8:45結束。

當我運行查詢時,它給了我日期和時間毫秒的格式。那我怎麼能只有時間?像上午8:00?

+0

嘗試在SQL中使用DATEPART來獲取所需格式的時間。 – user2989408

+0

我建議您使用從數據庫中獲得的值,然後在應用程序中執行所有「格式化」。如果您不在數據庫級進行處理,您將會更加靈活。如果你這樣做,你會得到一個字符串。否則,您將擁有一個'DateTime',您可以根據需要進行轉換和使用。 –

+0

我該如何格式化C#中的值? – GoGo

回答

0

假設你使用SQL Server(我想你),它聽起來就像你正在使用的datetime數據類型:

datetime代表的時間瞬間。在內部,datetime由一對整數的:

  • 第一個措施,以天爲單位從時代偏移。一個時代是日曆系統的零點,它對於SQL Server 1 January 1900 00:00:00.000
  • 第二個是自開始日起的[正數]偏移量,以毫秒爲單位。

是如何內部表示表示視覺完全取決於你,雖然SQL Server有一個[配置]默認的轉換模式。

如果您以編程方式訪問您的SQL,請使用C#說,API會自動將SQL Server datetime數據類型映射到您的語言等效類型(用於C#的System.Datetime)。問題出現了:您有責任以視覺或文字方式對其進行格式化。

如果您只想查看日期組件。您可以使用convert()/cast()函數在T-SQL中對其進行格式化:convert(varchar(32),{some-datetime-expression},116)將把{some-datetime-expression}轉換爲格式dd mmm yyyy。許多其他選項。

此外,假設您使用的是SQL Server的最新版本,如果您只想處理日期,請更改架構以使用date數據類型而不是datetime

0

您可以在查詢中添加CONVERT命令。像這樣:

SELECT CONVERT(VARCHAR(8), GETDATE(), 108) * FROM [icom].[dbo].[Periods] 

更多格式和例子你可以看看:http://www.sql-server-helper.com/tips/date-formats.aspx我希望幫助!

+0

SQL 2008及更高版本中還有一個「Time」數據類型。使用這可能會更容易,但我不確定您的具體情況。 –

0

您也可以使用SELECT DATEPART(hh, [YourDatetimeColumn]) FROM [Periods]。您也可以通過查看this stackoverflow question找到有用的答案。

+0

和會議記錄? –