在下图示例中“chk_date”字段在数据中显示的是默认时间,如何将这个时间在SQL查询时设为空?
cast(nullif(a.chk_date,'') as datetime) 确认日期
以上是我的方法。
select chk_date as 日期 from Ixa_payment_req
运行结果是:1900-01-01 00:00:00.000
select cast(nullif(chk_date,'')as datetime) as 日期 from Ixa_payment_req
运行结果是:null(展示的结果是空)
查询
此
时
所在的
数据库
中的表(非系统表):
SELECT NAME FROM SYSOBJECTS where type = 'U';
查询
数据库
中所有表(包含表信息):
SELECT * FROM INFORMATION_SCHEMA.TABLES
查看表的结构
知道了表名,根据表名查看表的结构(包含列名)
sp_columns ta
今天在做一个存储操作的
时
候发现有个
字段
create_date的值为
1900
-
01
-
01
,这个数据非常可疑,然后我去查看前端传来的参数是这样
"creation_date": ""
VO中的
字段
:
@JsonProperty("creation_date")
private String creationDate;
PO的中的
字段
:
@Column(name="creation_date")
private String creationDate;
这里解释下为什么用String类型来传
时间
,因为只要
SQL
Server
数据库
日期型格式处理在项目中使用
SQL
Server
数据库
会遇到有趣的问题,前端页面如果传递一个日期型字符串为’ ‘,插入到
数据库
后值变为
1900
-
01
-
01
,前端页面也会
显示
这个日期
这是由于
数据库
中采用了datetime型
字段
,它是默认由8个字节组成,存储类型为数字,前4个字节存储
1900
-
01
-
01
之前/之后的天数,后4个字节存储
00
:
00
后的毫秒数。
主要说下处理方式
关于
时间
的处理,在输入值的
时
候,由于没有输入,结果在
数据库
中却保存为
1900
-
01
-
01
,这样显然不符合要求。
经过测试:
1.发现如果给日期
时间
类型的赋予默认当前
时间
,则在insert表中
字段
没有的情况下,存入
数据库
的值就是当前
时间
,这个没有疑问,但是my
sql
中不支持
时间
类型的默认值。
2.如果给日期
字段
(以datetime为例)一个null的value,则保存到
数据库
是null,也没有
若
字段
定义的类型为datetime,插入为''(空),那么会默认值为
1900
-
01
-
01
00
:
00
:
00.000
解决方法
查询
的
时
候过滤下cast(nullif('','')asdatetime)
select cast('' as datetime)
, cast(nullif('','') as datetime)
, isnull(cast(...
将
时间
类型的Textbox值插入到
数据库
中,同
时
数据库
比如有一个
时间
字段
birthday类型为 smalldatetime ,可以
为空
,当这个textbox中文本
为空
时
往
数据库
插入
字段
,总是为
1900
-1-1,
现在怎样将它转换
为空
:
1.首先判断textbox是否
为空
if (string.IsNullOrEmpty(ztxt_birthday.Text....
update tablename set
时间
字段
= ' '
SQL
SERVER
会自动加上 "
1900
-
01
-
01
"
update tablename set
时间
字段
=null
======================================
ull值不会,但是其他会。在...
在
sqlserver
数据库
中如果
时间
insert或者update为’ ‘
时
数据库
会自动填写值为’
1900
-
01
-
01
00
:
00
:
00.000
’
那已经存在的我们可以这样把这个值去掉
update table set time=null where time= '
1900
-
01
-
01
00
:
00
:
00.000
'
然后在insert或者update
时
空就
不要
操作这个
字段
就好
sql
2
00
5 若
字段
定义的类型为datetime,插入为''(空),那么会默认值为
1900
-
01
-
01
00
:
00
:
00.000
解决方法
查询
的
时
候过滤下cast(nullif('','') as datetime)
select cast('' as datetime)
, cast(nullif('','') as datetime)
, isnull(cast