我想将varchar
转换为Datetime
数据类型(DATESX = UDDT,datetime)。我知道我要用什么:
CONVERT(datetime, '@adx_en_cours_etude')
但是我没有看到我可以在哪里添加这个转换函数...
DECLARE @return_value int
EXEC @return_value = [dbo].[ps_ListingElem]
@aid_cdi = 5058,
@adx_en_cours_etude = '2007-05-23 00:00:00.000'
SELECT 'Return Value' = @return_value
GO
/*My stored procedure :*/
ALTER PROCEDURE [dbo].[ps_ListingElem]
@aid_cdi ID, /* uddt */
/* (DATESX = User defined datatype = datetime type) */
@adx_en_cours_etude DATESX,
AS
BEGIN
SELECT
pc_sup.dt_deb,
pc_sup.dt_fin,
pc_sup.id_type_produit,
FROM pc_sup
INNER JOIN type_prod ON pc_sup.id_type_prod = type_prod.id_type_prod
INNER JOIN cdi_type_prod ON type_prod.id_type_prod = cdi_type_prod.id_type_prod
WHERE cdi_type_prod.id_cdi = @aid_cdi
AND (@adx_en_cours_etude IS NULL
OR pc_sup.dt_deb <= @adx_en_cours_etude
AND pc_sup.dt_fin >= @adx_en_cours_etude )
END
答案 0 :(得分:0)
假设pc_sup.dt_deb
and pc_sup.dt_fin
都是日期时间
DECLARE @return_value int
EXEC @return_value = [dbo].[ps_ListingElem]
@aid_cdi = 5058,
@adx_en_cours_etude = '2007-05-23 00:00:00.000'
SELECT 'Return Value' = @return_value
/*My stored procedure :*/
ALTER PROCEDURE [dbo].[ps_ListingElem]
@aid_cdi ID, /* uddt */
/* (DATESX = User defined datatype = datetime type) */
@adx_en_cours_etude DATESX,
AS
BEGIN
SELECT
pc_sup.dt_deb,
pc_sup.dt_fin,
pc_sup.id_type_produit,
FROM pc_sup
INNER JOIN type_prod ON pc_sup.id_type_prod = type_prod.id_type_prod
INNER JOIN cdi_type_prod ON type_prod.id_type_prod = cdi_type_prod.id_type_prod
WHERE cdi_type_prod.id_cdi = @aid_cdi
AND (CONVERT(DATETIME, @adx_en_cours_etude) IS NULL
OR pc_sup.dt_deb <= CONVERT(DATETIME, @adx_en_cours_etude)
AND pc_sup.dt_fin >= CONVERT(DATETIME, @adx_en_cours_etude) )
END
答案 1 :(得分:0)
EXEC @return_value = [dbo].[ps_ListingElem]
@aid_cdi = 5058,
@adx_en_cours_etude = '2007-05-23 00:00:00.000'
你不必转换。以字符串ISO格式(YYYY-MM-DD)指定日期,就像SQL Server一样。您根本不必转换为日期时间。