转换varchar =>日期时间存储过程

时间:2014-07-16 21:57:22

标签: sql sql-server tsql sql-server-2005

我想将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

2 个答案:

答案 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声明吗?

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一样。您根本不必转换为日期时间。