我有一个带有几个列的Server表。
其中一列是date
,另一列是No of Nights
。
夜数始终是一个两个字符的varchar
列,其值如1N、2N、3N等,取决于最多7N的夜晚数。
我想从日期中减去1N列的1部分。
ex:25Oct15 - 1N = 24Oct15
显然,我将用实际的列名替换'1N‘。我试着做了个修剪:
date - left(no of nights, 1)
但我犯了个错误
将varchar值'25Oct16‘转换为数据类型int时,转换失败。
样本日期如下
Date | NoofNIghts | Result
2016-04-26 00:00:00.000 | 1N |
2016-04-28 00:00:00.000 | 3N |
其中结果列将是减去的值。任何帮助都会很好。谢谢。
发布于 2016-05-02 20:59:30
SELECT DATEADD ( DAY, - CONVERT(INT, REPLACE(NoofNights, 'N', '')), getdate() ) as Result
发布于 2016-05-02 20:59:06
尝尝这个
DECLARE @V_Date DATETIME = '2016-04-26 00:00:00.000'
,@V_NoofNIghts VARCHAR(2) = '1N'
SELECT DATEADD(DAY, CAST(LEFT(@V_NoofNIghts,1) AS INT) *-1 ,@V_Date)
发布于 2016-05-02 20:59:22
好的基本查询应该类似于
Update tablename
set result= DATEADD(d, -CAST(LEFT(NoofNIghts, LEN(NoofNIghts)-1) AS INT),Date)
https://stackoverflow.com/questions/36995805
复制相似问题