我在SQL中有一列數據,當前處於日期時間格式。如果需要可以更改它。我需要只顯示一天中的時間,也可以顯示上午10點或上午10點。我不想在這個例子中顯示日期。如何只顯示AM或PM從日期時間格式的字段中顯示的時間?
因此,我不需要'1900-01-01 11:45:59.800'作爲例子,我需要'11:45:59.8 AM'。
另外,這不是當前的「getdate」時間。它來自我稱爲'時間'的數據字段 我在網上看到各種各樣的轉換格式,但沒有人會爲我拉這個。
謝謝!!!!
我在SQL中有一列數據,當前處於日期時間格式。如果需要可以更改它。我需要只顯示一天中的時間,也可以顯示上午10點或上午10點。我不想在這個例子中顯示日期。如何只顯示AM或PM從日期時間格式的字段中顯示的時間?
因此,我不需要'1900-01-01 11:45:59.800'作爲例子,我需要'11:45:59.8 AM'。
另外,這不是當前的「getdate」時間。它來自我稱爲'時間'的數據字段 我在網上看到各種各樣的轉換格式,但沒有人會爲我拉這個。
謝謝!!!!
正如我的評論,我建議你不要這樣做。
SQL Server是一個數據的地方,爲了顯示目的而轉換數據往往是模糊的線路,可以回來困擾你。 (舉一個例子,如果你需要將這段時間作爲將來其他地方的時間,你會再次將它從字符串轉換回來嗎?)
如果是必要的,那麼你必須做一些格式化你自己。
SELECT
RIGHT(CONVERT(VARCHAR(26), GETDATE(), 109), 14)
,或者更凌亂...
SELECT
DATEPART(HOUR, GETDATE()) + ':' +
DATEPART(MINUTE, GETDATE()) + ':' +
DATEPART(SECOND, GETDATE()) + '.' +
DATEPART(MILLISECOND, GETDATE()) +
CASE WHEN DATEPART(HOUR, GETDATE()) < 12 THEN 'AM' ELSE 'PM' END
我說了?你最好在客戶端做;
您!我在SQL中這樣做的原因是這樣的:我有一個SSIS包,它抓取這個日期時間,並將其顯示在發送給客戶的電子郵件中。所以最終的結果是在這個電子郵件中顯示來自創建的數據變量是SQL的數據。但是,我同意你的看法。我會試試這個! – John
重命名你的表字段,Time
是一個保留字,這將是一個痛苦的維護。如果您想要毫秒精度,請確保您正在使用新的datetime2
數據類型。
要格式化時間部分用途:
SELECT CONVERT(TIME, [Time]) FROM [Your Table]
如果你只想要一個三位數的時間後,你可以使用:
SELECT CONVERT(TIME(3), [Time]) FROM [Your Table]
要使用特定格式的日期轉換爲字符串SQL完全依賴於你的SQL版本(你正在使用哪種RDBMS?)。另外,在客戶端而不是在SQL服務器中執行格式設置通常更爲明智(保持數據庫中的數據類型爲true,並且格式設置在應用程序的頂層)。 – MatBailie
我正在使用SQL 2008. – John