我的表中有Terms
列,它包含如下数据:
30D, 40D, etc.
D
代表几天。
我的问题:如何在Terms
列中总结日期?如何将字符串转换为int?
提前谢谢。
答案 0 :(得分:1)
只需使用REPLACE抛弃D和CONVERT即可将varchar转换为数字....
SELECT SUM(CONVERT(int, REPLACE(Terms,'D',''))) FROM TableName
编辑:评论员是对的,CAST也可以。
我不会得到所有的选票。这家伙刚问一个SQL问题。
编辑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
'day'告诉DATEADD添加天数(现在看起来非常明显......)
CONVERT + REPLACE告诉它添加了多少天
AND - dt是我们的专栏名称。
那么 - 如何在今天添加“30D”呢?简单。我们只是用GETDATE()...
换掉dtSELECT DATEADD(day, CONVERT(int, REPLACE(Terms,'D','')), GETDATE()) FROM TableName