简体   繁体   English

转换varchar => Datetime存储过程

[英]Convert varchar=> Datetime stored procedure

I would like to convert a varchar into Datetime datatype (DATESX = UDDT, datetime). 我想将varchar转换为Datetime数据类型(DATESX = UDDT,datetime)。 I know what I have to use : 我知道我必须使用:

CONVERT(datetime, '@adx_en_cours_etude') 

but I don't see where I can add this convert function ... 但我看不到我可以在哪里添加此转换功能...

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

Assuming pc_sup.dt_deb and pc_sup.dt_fin both Datetime 假设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

are you referring to the EXEC statement ? 您是指EXEC语句吗?

EXEC    @return_value = [dbo].[ps_ListingElem]
                         @aid_cdi = 5058,
                         @adx_en_cours_etude  = '2007-05-23 00:00:00.000'

you don't have to convert. 您不必转换。 Specifying the date in string ISO format (YYYY-MM-DD) as what you have done is fine for SQL Server. 以字符串ISO格式(YYYY-MM-DD)指定日期作为您所做的事情对于SQL Server来说是很好的。 You don't have to convert to datetime at all. 您根本不必转换为日期时间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM