插入数据类型为DateTime时为空值时,为什么SQL SERVER会自动加上"1900-01-01"
2011-11-28 11:43
597 查看
系统默认的吧,
update tablename set 时间字段= ' '
SQL SERVER会自动加上 "1900-01-01 "
update tablename set 时间字段=null
就不会了
======================================
ull值不会,但是其他会。在系统中,时间不是一个字符串,而是一个带小数的数字——整数部分代表从1900年1月1日以后的天数,小数部分为午夜之后的毫秒数(好像是)。
======================================
datetime/smalldatetime的存储格式是固定的.
由日期+时间组成.
如果只存储时间,它会自动加上1900-1-1
除非你改用字符型字段来存储
========================================
datetime类型系统里面是共用8个字节来存储的,存储的数字类型。
其中前4个字节用来存储日期1900-1-1之前/后的天数,
其中后4个字节用来存储00:00后的毫秒数。
如果是 ' '的就是1900-1-1了。
==========================================
存入之前先检查,如果是空的就设为NULL
或者取的时候先检查,如果是1900-01-01,那么设为空,不过这样的话打印的时候会有问题的,所以还是建议用前面一种办法
update tablename set 时间字段= ' '
SQL SERVER会自动加上 "1900-01-01 "
update tablename set 时间字段=null
就不会了
======================================
ull值不会,但是其他会。在系统中,时间不是一个字符串,而是一个带小数的数字——整数部分代表从1900年1月1日以后的天数,小数部分为午夜之后的毫秒数(好像是)。
======================================
datetime/smalldatetime的存储格式是固定的.
由日期+时间组成.
如果只存储时间,它会自动加上1900-1-1
除非你改用字符型字段来存储
========================================
datetime类型系统里面是共用8个字节来存储的,存储的数字类型。
其中前4个字节用来存储日期1900-1-1之前/后的天数,
其中后4个字节用来存储00:00后的毫秒数。
如果是 ' '的就是1900-1-1了。
==========================================
存入之前先检查,如果是空的就设为NULL
或者取的时候先检查,如果是1900-01-01,那么设为空,不过这样的话打印的时候会有问题的,所以还是建议用前面一种办法
相关文章推荐
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- easyui datetimebox处理【前台传递到后台是string类型,但是后台定义的是java.util.date,如何自动转换数据类型】
- SQL数据表批量插入日期值(datetime类型)
- 【转贴】揭密SQL Server DATETIME数据类型
- python往mysql中插入datetime类型的数据
- SQL Server 2005 获取 DateTime 数据类型字段中的指定年月日部分
- printf()中的数据类型%h后为什么要加上d才能表示短整型
- SQL Server datetime数据类型设计与优化误区
- 正确利用php向MySQL datetime类型中插入数据
- sql2005 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000
- PHP ThinkPHP补充。插入(修改)数据时,对默认字段进行自动填充;form表单字段映射成合法字段;"瞻前顾后机制"
- SQL Server datetime数据类型设计与优化误区
- 【基础】关于Java向数据库中插入DateTime类型数据
- mssql中将String类型的数据插入给datetime类型的格式转换
- sql2005 若字段定义的类型为datetime,插入为''(空),那么会默认值为1900-01-01 00:00:00.000
- C#中解决插入数据库的某个字段类型为datetime 去掉默认值1900-01-01
- 让插入数据类型为DateTime时没有系统默认值
- 在java中已经规定数据类型是长整形为什么数字后面还要加一个"l"啊?前面不是有long吗?