我有一個像下面這樣的SQL表。SQL日期時間數據
SELECT * FROM [icom].[dbo].[Periods]
此表給我指定的期間。例如,第一階段從8:00開始,在上午8:45結束。
當我運行查詢時,它給了我日期和時間毫秒的格式。那我怎麼能只有時間?像上午8:00?
我有一個像下面這樣的SQL表。SQL日期時間數據
SELECT * FROM [icom].[dbo].[Periods]
此表給我指定的期間。例如,第一階段從8:00開始,在上午8:45結束。
當我運行查詢時,它給了我日期和時間毫秒的格式。那我怎麼能只有時間?像上午8:00?
假設你使用SQL Server(我想你),它聽起來就像你正在使用的datetime
數據類型:
datetime
代表的時間瞬間。在內部,datetime
由一對整數的:
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
。
您可以在查詢中添加CONVERT命令。像這樣:
SELECT CONVERT(VARCHAR(8), GETDATE(), 108) * FROM [icom].[dbo].[Periods]
更多格式和例子你可以看看:http://www.sql-server-helper.com/tips/date-formats.aspx我希望幫助!
SQL 2008及更高版本中還有一個「Time」數據類型。使用這可能會更容易,但我不確定您的具體情況。 –
您也可以使用SELECT DATEPART(hh, [YourDatetimeColumn]) FROM [Periods]
。您也可以通過查看this stackoverflow question找到有用的答案。
和會議記錄? –
嘗試在SQL中使用DATEPART來獲取所需格式的時間。 – user2989408
我建議您使用從數據庫中獲得的值,然後在應用程序中執行所有「格式化」。如果您不在數據庫級進行處理,您將會更加靈活。如果你這樣做,你會得到一個字符串。否則,您將擁有一個'DateTime',您可以根據需要進行轉換和使用。 –
我該如何格式化C#中的值? – GoGo