我需要你帮忙解决转换问题。我喜欢的代码
ALTER PROCEDURE [WORKFLOW_APP].[DIAGNOSISCD_CAR]
@v_monthstr CHAR ,
@v_monthend CHAR ,
@v_year CHAR ,
@v_state_cd CHAR ,
@v_claim_key CHAR ,
@v_contractor CHAR
DECLARE @v_makedatestr VARCHAR(10)
DECLARE @v_makedateend VARCHAR(10)
SELECT @v_makedatestr = '01-' + @v_monthstr + '-' + @v_year
SELECT @v_makedateend = '01-' + @v_monthend + '-' + @v_year
SELECT @v_datebegin = CONVERT(DATETIME, @v_makedatestr,105)----error
SELECT @v_dateend = DATEADD(D, -DAY(DATEADD(M, 1, CONVERT(DATETIME, @v_makedateend ,105))), DATEADD(M, 1, CONVERT(DATETIME, @v_makedateend ,105)))---error
此代码使用工具形成并更改了某处手册。
我正在
'从字符串转换日期时转换失败。'
在“错误”评论。
我尝试使用转换,强制转换功能但无法解析。
任何人都建议您输入错误并为该错误编写适当的转换代码。
我正在将Oracle存储过程转换为SQL Server 2005。
我正在使用SQL Server Management Studio Express 2005。
上面的代码有什么问题,代码是什么?
任何代码? ???? //////正确转换
答案 0 :(得分:0)
如果您在服务器中运行具有不同文化相关设置的脚本,则将字符串转换为日期时间的方式可能会导致不同的结果。
对于作为字符串的datetime(s),我建议您遵循以年,月等开始构建字符串的规则...... yyyy-MM-dd
。
SELECT @v_makedatestr = @v_year + '-' + @v_monthstr + '-01'
SELECT @v_makedateend = @v_year + '-' + @v_monthend + '-01'
然后你可以做一个演员:
cast(@v_makedatestr as datetime);
cast(@v_makedateend as datetime);