我在截斷數據時遇到了一些問題。我正在使用SQL的GETDATE()函數獲取當前的日期和時間,並將它們輸入到數據庫中。但是,我只想將日期和時間保存到一分鐘。換句話說,當我輸入新數據時,我想要dd/mm/yyyy hh:mm:00.000或dd/mm/yyyy hh:mm。我怎麼能這樣做呢?在SQL中截斷秒和毫秒
我應該注意我正在使用MS-SQL。
我在截斷數據時遇到了一些問題。我正在使用SQL的GETDATE()函數獲取當前的日期和時間,並將它們輸入到數據庫中。但是,我只想將日期和時間保存到一分鐘。換句話說,當我輸入新數據時,我想要dd/mm/yyyy hh:mm:00.000或dd/mm/yyyy hh:mm。我怎麼能這樣做呢?在SQL中截斷秒和毫秒
我應該注意我正在使用MS-SQL。
有很多方法可以做到這一點。
例如,你可以在生成datetime
從GetDate()
轉換爲smalldatetime
第一,點菜:
CAST(GetDate() AS smalldatetime)
需要明確的是,這將圓的生成秒向上(或向下)到最接近的分鐘取決於增加當前秒數的值。
編輯:
或者,你可以有SQL服務器截斷datetime
了你一個「乾淨」(讀:無舍入,因爲該值是預截斷)轉換爲smalldatetime
:
CAST(DateAdd(minute, DateDiff(minute, 0, GetDate()), 0) AS smalldatetime)
一種方法是將其轉換爲smalldatetime進行賦值(並根據需要返回)。 SMALLDATETIME總是秒,超越置爲00
SELECT CONVERT(smalldatetime, GETDATE())
因爲這可能還是圍捕下,另一種方式來安全地截斷秒會是這樣:
SELECT CONVERT(datetime, CONVERT(nchar(16), GETDATE(), 120), 120)
的conversion code 120返回格式yyyy-mm-dd hh:mi:ss
。
對於截斷:
SELECT SMALLDATETIMEFROMPARTS(
datepart(year ,dt)
,datepart(month ,dt)
,datepart(day ,dt)
,datepart(hour ,dt)
,datepart(minute,dt)
)
FROM (SELECT GETDATE()) t(dt)
要注意的是:這隻適用於SQL Server 2012及更高版本。 – KekuSemau
+1指出它向上或向下舍入 – KekuSemau