对于char型的,如果超出范围怎样算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于char型的,如果超出范围怎样算?相关的知识,希望对你有一定的参考价值。
char字符的范围不是—128~127吗?假如定义a=156
然后怎么输出
156,就是-100。追问
怎么算的
追答156 - 256 = -100。
弄明白了补码,就能知道这个规律了。
如果用二进制怎么算?
追答1000 0000 ~ 1111 1111,代表 -128 ~ -1;
0000 0000 ~ 0111 1111,代表 0 ~ 127。
a = 156,就是:a = 1001 1100。
这就是 -128 ~ -1 之间的数。
准确的说,156,就是[-100]补码。
10000000为什么是-128
追答补码,是基础知识。
你如果弄懂了补码,就不会有这一连串的问题。
参考:
http://zhidao.baidu.com/question/518892819.html
算补码时是不是用1直接把最后一个替换?
对吗?
追答算补码时是不是用1直接把最后一个替换?
----
不是。
求补码还要问?
补码,这可是基础知识。
书上有很多例题,看看就明白了。
应该是类型错误,运行不了
追问就是char字符的范围不是—128~127吗?
假如定义a=156
然后怎么输出
追答忘了,3年没学了
追问奥
追答不好意思
追问没事
将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围
【中文标题】将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围【英文标题】:The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value in SQL Server 2005 【发布时间】:2013-03-27 05:43:04 【问题描述】:我写了一个视图,其中表格中的日期被转换为
convert(varchar, date, 103)
并取别名为 DATE1,然后我编写了如下查询:
select DATE1
from date_demo
WHERE MONTH(DATE1) = '12'
我只想检索月份 = 'december' 为 12 的特定记录
我遇到了一个错误:
将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。
这是在 SQL Server 2005 中,请帮助我
【问题讨论】:
为什么不使用 where 子句中的基础日期列,而不是显式转换为字符串,然后隐式返回日期时间?你想让你的服务器哭吗? 【参考方案1】:正如大卫建议的那样,您应该使用日期列而不是转换为字符串然后再转换回日期时间列。
但是,当您将其转换回日期时间时,您需要指定Date Time Style
select DATE1 from date_demo
WHERE MONTH(convert(datetime,DATE1,103))= '12'
另外你需要指定varchar数据类型的长度阅读这篇文章bad habits to kick declaring varchar without length
【讨论】:
这不是错误所指的,SQL可以很好地完成从字符串到int的转换 我的错误。更新了答案以上是关于对于char型的,如果超出范围怎样算?的主要内容,如果未能解决你的问题,请参考以下文章
将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。异常
将 char 数据类型转换为 datetime 数据类型导致 SQL Server 2005 中的 datetime 值超出范围