C# 转换为smalldatetime sql
我试图找到一些与几个变量匹配的记录,它们是日期 但我得到了这个错误: 将字符串转换为smalldatetime数据类型时,转换失败 从我的sql脚本C# 转换为smalldatetime sql,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,我试图找到一些与几个变量匹配的记录,它们是日期 但我得到了这个错误: 将字符串转换为smalldatetime数据类型时,转换失败 从我的sql脚本 ALTER PROCEDURE GetByTravelDates ( @date_start as varchar, @date_end as varchar ) AS select * from holiday_a hr inner join holiday_b hw on hr.holiday_id=hw.id where date_st
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar,
@date_end as varchar
)
AS
select * from holiday_a hr
inner join holiday_b hw on
hr.holiday_id=hw.id
where date_start=CONVERT(SMALLDATETIME,@date_start,101) and date_end=CONVERT(SMALLDATETIME,@date_end,101)
然后从c#control向SP发布:
string date = "24 Jan 2014";
string date2 = "29 Jan 2014";
数据库中的格式如下所示:
2014-01-24 00:00:00
年月日
谢谢将varchar的大小定义为:
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar(15),
@date_end as varchar(15)
)
如果存在错误,则检查开始日期的数据类型。将varchar的大小定义为:
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar(15),
@date_end as varchar(15)
)
如果存在错误,则检查开始日期的数据类型。将varchar的大小定义为:
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar(15),
@date_end as varchar(15)
)
如果存在错误,则检查开始日期的数据类型。将varchar的大小定义为:
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar(15),
@date_end as varchar(15)
)
如果存在错误,请检查开始日期的数据类型。从更改SP参数
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar,
@date_end as varchar
)
AS
到
从更改SP参数
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar,
@date_end as varchar
)
AS
到
从更改SP参数
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar,
@date_end as varchar
)
AS
到
从更改SP参数
ALTER PROCEDURE GetByTravelDates
(
@date_start as varchar,
@date_end as varchar
)
AS
到
您能否解释一下,如果您有datetime字段,为什么要传递字符串并尝试在SQL过程中转换它们?从一开始就好像是错的。将您的过程更改为需要两个smalldatetime,并从C#代码中传递两个datetime—您不应该将日期存储为字符串—这样做只是自找麻烦。使用
DATE
或DATETIME
数据类型!您能否解释一下,如果您有datetime字段,为什么要传递字符串并尝试在SQL过程中转换它们?从一开始就好像是错的。将您的过程更改为需要两个smalldatetime,并从C#代码中传递两个datetime—您不应该将日期存储为字符串—这样做只是自找麻烦。使用DATE
或DATETIME
数据类型!您能否解释一下,如果您有datetime字段,为什么要传递字符串并尝试在SQL过程中转换它们?从一开始就好像是错的。将您的过程更改为需要两个smalldatetime,并从C#代码中传递两个datetime—您不应该将日期存储为字符串—这样做只是自找麻烦。使用DATE
或DATETIME
数据类型!您能否解释一下,如果您有datetime字段,为什么要传递字符串并尝试在SQL过程中转换它们?从一开始就好像是错的。将您的过程更改为需要两个smalldatetime,并从C#代码中传递两个datetime—您不应该将日期存储为字符串—这样做只是自找麻烦。使用DATE
或DATETIME
数据类型!是的,但是为什么?解释为什么声明大小应该有效是的,但是为什么?解释为什么声明大小应该有效是的,但是为什么?解释为什么声明大小应该有效是的,但是为什么?解释为什么声明大小应该有效是的,但是为什么?解释为什么应该声明大小work@Steve:因为如果声明varchar类型的变量而不指定长度,则默认长度为1,这是完成回答的原因;或者更好:如果这些是日期-使用适当的数据类型,如DATE
,DATETIME/DATETIME2(n)
或SMALLDATETIME
而不是一个字符串!是的,但是为什么?解释为什么应该声明大小work@Steve:因为如果声明varchar类型的变量而不指定长度,则默认长度为1,这是完成回答的原因;或者更好:如果这些是日期-使用适当的数据类型,如DATE
,DATETIME/DATETIME2(n)
或SMALLDATETIME
而不是一个字符串!是的,但是为什么?解释为什么应该声明大小work@Steve:因为如果声明varchar类型的变量而不指定长度,则默认长度为1,这是完成回答的原因;或者更好:如果这些是日期-使用适当的数据类型,如DATE
,DATETIME/DATETIME2(n)
或SMALLDATETIME
而不是一个字符串!是的,但是为什么?解释为什么应该声明大小work@Steve:因为如果声明varchar类型的变量而不指定长度,则默认长度为1,这是完成回答的原因;或者更好:如果这些是日期-使用适当的数据类型,如DATE
,DATETIME/DATETIME2(n)
或SMALLDATETIME
而不是一个字符串!