我有一个包含几列的SQL Server表。
其中一列是date
,另一列是No of Nights
。
夜数始终为两个字符varchar
列,其值为1N,2N,3N等,具体取决于最多7N的夜晚。
我想从日期中减去1N列的1部分。
例如: 25Oct15 - 1N = 24Oct15
显然我将取代' 1N'使用实际的列名称。我尝试修剪:
date - left(no of nights, 1)
但是我收到了错误
转换varchar值时转换失败' 25Oct16&#39>数据类型int。
下面的示例日期
Date | NoofNIghts | Result
2016-04-26 00:00:00.000 | 1N |
2016-04-28 00:00:00.000 | 3N |
结果列将是减去的值。任何帮助都会很棒。感谢。
答案 0 :(得分:2)
SELECT DATEADD ( DAY, - CONVERT(INT, REPLACE(NoofNights, 'N', '')), getdate() ) as Result
答案 1 :(得分:1)
试试这个
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)
答案 2 :(得分:1)
基本的查询应该像
Update tablename
set result= DATEADD(d, -CAST(LEFT(NoofNIghts, LEN(NoofNIghts)-1) AS INT),Date)