如何從日期中提取本月的最后一天
DEC2009, APR2013, AUG2008, NOV2017, JUL2014等
我已經嘗試過 datepart、convert、cast、month、year,但我一直在處理型別轉換錯誤。
uj5u.com熱心網友回復:
使用try_convert和eomonth()
declare @date varchar(7)='jul2014'
select Day(EOMonth(Try_Convert(date, @date)))
uj5u.com熱心網友回復:
您可以嘗試以下操作:
SELECT
dt,
DATEADD(day, -1, DATEADD(month, 1,
CONVERT(datetime, '01' dt, 106))) AS dt_eom
FROM yourTable;
演示
這里的策略是首先從例如DEC2009string構建01DEC2009。然后,我們使用CONVERT掩碼 106。我們通過添加一個月然后減去一天來獲得該月的最后一天。
uj5u.com熱心網友回復:
你可以用這個
DECLARE @date VARCHAR(20)='DEC2009'
SELECT Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, @date),-1) AS
DATE),100))
和
SELECT
date,
Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, date),-1) AS
DATE),100)) AS date_eom
FROM Table;
uj5u.com熱心網友回復:
您可以使用該EOMONTH函式獲取一個月中的最后一天。
首先構造一個實際的日期值:添加01到開頭,然后使用 style 進行轉換106。如果您只使用CONVERT或CAST不使用樣式引數,您可能會因當地文化而遇到問題。相反,您應該明確指定樣式。
SELECT
dt,
EOMONTH( CONVERT(date, '01' dt, 106) ) AS dt_eom
FROM yourTable;
資料庫<>小提琴
uj5u.com熱心網友回復:
謝謝大家(除了似乎沒有理解或回答問題的 Larnu)
您的有用建議,特別是“TRY_CONVERT”讓我能夠處理這兩個條目,其中月份為 4 個字符的欄位正在拋出它。我的最終代碼是:
EOMONTH(CONVERT(DATE, LEFT(TRIM(myField),3) RIGHT(TRIM(myField),4)))
它作業正常。:)
快樂的時光!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387420.html
標籤:sql sql-server 查询语句 日期转换
