SELECT DATALENGTH('123')  結果﹕3
SELECT DATEDIFF(month,GETDATE(),'2004-09-23')  結果﹕-1

解决方案 »

  1.   

    第一句可以這樣寫SELECT DATALENGTH(cast(123 as varchar))  結果﹕3
      

  2.   

    你的使用方法错了:
    SELECT DATALENGTH(123)----返回任何數值都是4
    --这个是得到字符串的字节数改成:SELECT DATALENGTH('123')
    SELECT DATEDIFF(month,GETDATE(),2004-09-23)----返回的值,不解?--上面的时间 不是时间格式改成这样
    SELECT DATEDIFF(month,GETDATE(),'2004-09-23')
      

  3.   

    DATALENGTH
    返回任何表达式所占用的字节数。
    123 int类型,int类型的说明:
    从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节
    所以:
    SELECT DATALENGTH(123) 的结果是4,表示 123 占用了4字节的存储空间
      

  4.   

    SELECT DATALENGTH('123')  結果﹕3----這個偶知道!但為什麼數值會是4.
    SELECT DATEDIFF(month,GETDATE(),'2004-09-23')  結果﹕-1---這個偶也知道!是不是該兩種類型不匹配,隨機產生的數據!呵呵...
      

  5.   

    SELECT DATEDIFF(month,GETDATE(),2004-09-23)
    相當于下面這句
    SELECT DATEDIFF(month,GETDATE(),1972)意思是當前睥到1972年共是多少個月
    -1193個月
      

  6.   

    不是﹐上面是正確的SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 是當前月份到9月份是多少個月﹐-1正確SELECT DATEDIFF(month,GETDATE(),'2004-07-23') --結果﹕-3
    是正確的
      

  7.   

    1.各位回答真快呀!真熱情!呵呵...難道任何數值都只占用了4字节嗎?SELECT DATALENGTH(123) 的结果是4,表示 123 占用了4字节的存储空间
      

  8.   

    SELECT DATEDIFF(month,GETDATE(),2004-09-23)----是不是該兩種類型不匹配,隨機產生的數據!呵呵...
    偶知道!呵呵...
    +
    SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 是當前月份到9月份是多少個月﹐-1正確SELECT DATEDIFF(month,GETDATE(),'2004-07-23') --結果﹕-3
    是正確的
      

  9.   

    不是任何数值都占4个字节。
    tinyInt只占1个字节。
    smallint只占2个字节。
    Int才占4个字节
    BigInt占8个字节。
    如果你随便写个数值,不是超过Int的表示范围的话就默认是Int类型。所以占4个字节。
      

  10.   

    SELECT DATEDIFF(month,GETDATE(),2004-09-23)----返回的值,不解?
    2004-09-23=2004-9-23=1972SELECT DATEDIFF(month,GETDATE(),2004-09-23)
    相當于下面這句
    SELECT DATEDIFF(month,GETDATE(),1972)意思是當前睥到1972年共是多少個月
    -1193個月
    这句话是不对的。
    SELECT DATEDIFF(month,GETDATE(),'1972-1-1')
    返回-393到1972年应该是393个月。
    select convert(datetime ,1972)
    返回1905年05月27日。
    SELECT DATEDIFF(month,GETDATE(),'1905-5-27')
    返回-1193
    所以2004-09-23实际上是:'1905-5-27'
    明白了吧。
      

  11.   

    1.mastersky(浪)兄解釋夠明白!呵呵...(第一點)2.再請教:SELECT DATEDIFF(month,GETDATE(),2004-09-23)GETDATE()與2004-09-23是兩種不同類型的數據,但加上'2004-09-23'是偶想要返回的結果?GETDATE()與'2004-09-23'也是不同類型之數據,但為啥結果不一樣?SELECT DATEDIFF(month,GETDATE(),2004-09-23)-1193SELECT DATEDIFF(month,GETDATE(),'2004-09-23')-1
      

  12.   

    SELECT DATALENGTH(11111111111111111111111111111111111111)返回结果17
      

  13.   


    select cast(2004-09-23 as datetime)
    ------------------------------------------------------ 
    1905-05-27 00:00:00.000(所影响的行数为 1 行)SELECT DATEDIFF(month,
    '1905-05-27',GETDATE())
    ----------- 
    1193(所影响的行数为 1 行)