請教:SQL SERVER函數 SELECT DATALENGTH('123') 結果﹕3SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 結果﹕-1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一句可以這樣寫SELECT DATALENGTH(cast(123 as varchar)) 結果﹕3 你的使用方法错了:SELECT DATALENGTH(123)----返回任何數值都是4--这个是得到字符串的字节数改成:SELECT DATALENGTH('123')SELECT DATEDIFF(month,GETDATE(),2004-09-23)----返回的值,不解?--上面的时间 不是时间格式改成这样SELECT DATEDIFF(month,GETDATE(),'2004-09-23') DATALENGTH返回任何表达式所占用的字节数。123 int类型,int类型的说明:从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节所以:SELECT DATALENGTH(123) 的结果是4,表示 123 占用了4字节的存储空间 SELECT DATALENGTH('123') 結果﹕3----這個偶知道!但為什麼數值會是4.SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 結果﹕-1---這個偶也知道!是不是該兩種類型不匹配,隨機產生的數據!呵呵... SELECT DATEDIFF(month,GETDATE(),2004-09-23)相當于下面這句SELECT DATEDIFF(month,GETDATE(),1972)意思是當前睥到1972年共是多少個月-1193個月 不是﹐上面是正確的SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 是當前月份到9月份是多少個月﹐-1正確SELECT DATEDIFF(month,GETDATE(),'2004-07-23') --結果﹕-3是正確的 1.各位回答真快呀!真熱情!呵呵...難道任何數值都只占用了4字节嗎?SELECT DATALENGTH(123) 的结果是4,表示 123 占用了4字节的存储空间 SELECT DATEDIFF(month,GETDATE(),2004-09-23)----是不是該兩種類型不匹配,隨機產生的數據!呵呵...偶知道!呵呵...+SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 是當前月份到9月份是多少個月﹐-1正確SELECT DATEDIFF(month,GETDATE(),'2004-07-23') --結果﹕-3是正確的 不是任何数值都占4个字节。tinyInt只占1个字节。smallint只占2个字节。Int才占4个字节BigInt占8个字节。如果你随便写个数值,不是超过Int的表示范围的话就默认是Int类型。所以占4个字节。 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'明白了吧。 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 SELECT DATALENGTH(11111111111111111111111111111111111111)返回结果17 select cast(2004-09-23 as datetime)------------------------------------------------------ 1905-05-27 00:00:00.000(所影响的行数为 1 行)SELECT DATEDIFF(month,'1905-05-27',GETDATE())----------- 1193(所影响的行数为 1 行) bcp命令出错,跪求解答 小问题求助!自动删除数据库表中过期记录 问一问题SQL语句 这个字段怎么设置:? 存储过程,大家帮忙看看有什么问题啊 我的MSDE安装不了. 请问sql有没有象msdn一样的工具啊 登录失败,一直正常,今天头次遇到 据说很难实现的的问题,高手请进 一个小问题(在线等待) 有办法不安装SQL SERVER环境,而能运行SQL SERVER数据库? 我想实现按字段1分组,后按每组里的字段2排序,然后获取每一组里,字段2里最小的字段值记录
SELECT DATALENGTH(123)----返回任何數值都是4
--这个是得到字符串的字节数改成:SELECT DATALENGTH('123')
SELECT DATEDIFF(month,GETDATE(),2004-09-23)----返回的值,不解?--上面的时间 不是时间格式改成这样
SELECT DATEDIFF(month,GETDATE(),'2004-09-23')
返回任何表达式所占用的字节数。
123 int类型,int类型的说明:
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节
所以:
SELECT DATALENGTH(123) 的结果是4,表示 123 占用了4字节的存储空间
SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 結果﹕-1---這個偶也知道!是不是該兩種類型不匹配,隨機產生的數據!呵呵...
相當于下面這句
SELECT DATEDIFF(month,GETDATE(),1972)意思是當前睥到1972年共是多少個月
-1193個月
是正確的
偶知道!呵呵...
+
SELECT DATEDIFF(month,GETDATE(),'2004-09-23') 是當前月份到9月份是多少個月﹐-1正確SELECT DATEDIFF(month,GETDATE(),'2004-07-23') --結果﹕-3
是正確的
tinyInt只占1个字节。
smallint只占2个字节。
Int才占4个字节
BigInt占8个字节。
如果你随便写个数值,不是超过Int的表示范围的话就默认是Int类型。所以占4个字节。
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'
明白了吧。
select cast(2004-09-23 as datetime)
------------------------------------------------------
1905-05-27 00:00:00.000(所影响的行数为 1 行)SELECT DATEDIFF(month,
'1905-05-27',GETDATE())
-----------
1193(所影响的行数为 1 行)