在SQL Server中将字符串转换为Int

时间:2016-01-14 04:46:30

标签: sql-server

我的表中有Terms列,它包含如下数据:

30D, 40D, etc. 

D代表几天。

我的问题:如何在Terms列中总结日期?如何将字符串转换为int?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需使用REPLACE抛弃D和CONVERT即可将varchar转换为数字....

SELECT SUM(CONVERT(int, REPLACE(Terms,'D',''))) FROM TableName

编辑:评论员是对的,CAST也可以。

我不会得到所有的选票。这家伙刚问一个SQL问题。

Jeez ......人潮汹涌。

编辑2:

好的,根据评论,您似乎希望从条款中获得“截止日期”(例如,今天+ 30D或“今天+30天”)。为此,我们需要一个DATE列。或者,我们可以使用今天的日期(GETDATE())

假设您的表格中有一个名为... dt

的日期列

用于拉取dt +'30D'的SQL需要我们向dt添加30“天”。

DATEADD 会增加天数,前面提到的 CONVERT + REPLACE 组合会将'30D'转换为普通的'30'......

因此,您最终得到以下SQL:

SELECT DATEADD(day, CONVERT(int, REPLACE(Terms,'D','')), dt) FROM TableName
  1. 'day'告诉DATEADD添加天数(现在看起来非常明显......)

  2. CONVERT + REPLACE告诉它添加了多少天

  3. AND - dt是我们的专栏名称。

  4. 那么 - 如何在今天添加“30D”呢?简单。我们只是用GETDATE()...

    换掉dt
    SELECT DATEADD(day, CONVERT(int, REPLACE(Terms,'D','')), GETDATE()) FROM TableName