如何使用Tsql

时间:2016-11-29 03:18:12

标签: sql sql-server tsql

我有两列数据类型为varchar(6)的列,格式为yyyymm。现在我想在他们之间datediff。 这是我的解决方案,

select
    tblA, 
    tblB, 
    datediff(month, convert(datetime, tblA+'01', 120),convert(datetime, tblb+'01',120)+1 as count
from mytbl 

还有其他想法吗?感谢

2 个答案:

答案 0 :(得分:2)

事实证明,YYYYMMDD形式的字符串可以直接转换为日期值,不需要格式。所以,一个稍微简单的版本是:

select tblA, tblB, 
       datediff(month, convert(date, tblA + '01'), convert(datetime, tblb+'01')+1 as cnt
from mytbl;

我应该注意你可以也这样做:

select ( (left(tblA, 4) * 12 + right(tblA, 2)) - 
         (left(tblB, 4) * 12 + right(tblB, 2))
       )

SQL Server会将字符串转换为数字上下文中的数字。

另外,我觉得奇怪的是日期列被称为tblAtblB,但这就是问题的表达方式。

答案 1 :(得分:0)

你也可以试试这个......

items.push(<li key={i} className={i <= this.props.value && 'filled'} onClick={this.props.onRatingSelected.bind(null, i)}>{'\u2605'}</li>);