日期减法错误

时间:2016-05-03 04:49:02

标签: sql sql-server

我有一个包含几列的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      |

结果列将是减去的值。任何帮助都会很棒。感谢。

3 个答案:

答案 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)