我有一个使用javascript日历的网络应用程序。当用户点击日期时,它会填充日期标签(例如1/10/2018)。当我点击我的运行按钮时,包含此日期的输入信息将转到SQL Server中的SProc。出于某种原因,我有额外的角色你无法看到。例如:
Exec Get_Date '2','6/1/2018', 1, 100, 101, 500, 50
立即抛出错误。如果我重新输入这样的日期:
'6/1/2018'
它工作正常。显然,两个日期之间没有任何不同。我做了一些调查,使用SQL来查看使用此脚本的字符值:
DECLARE @nstring NVARCHAR(100)
SET @nstring ='6/1/2018'
DECLARE @position INT
SET @position = 1
DECLARE @CharList TABLE (
Position INT,
UnicodeChar NVARCHAR(1),
UnicodeValue INT
)
WHILE @position <= DATALENGTH(@nstring)
BEGIN
INSERT @CharList
SELECT @position as Position
,CONVERT(nchar(1),SUBSTRING(@nstring, @position, 1)) as UnicodeChar
,UNICODE(SUBSTRING(@nstring, @position, 1)) as UnicodeValue
SET @position = @position + 1
END
SELECT * FROM @CharList
运行此脚本后,我会得到附加的输出。如你所见,我有?被添加(例如?6 /?1 /?2018)并且我有一堆尾随空格甚至没有Unicode等价物(我尝试了rtrim函数并且没有做任何事情)。如果我这样做:
Select Len('6/1/2018') or Select(rtrim('6/1/2018))
我希望8的值应该回来,或者至少是11的值,它可以解释数字前面的问号;但是,我得到一个值13.我尝试在将它传递给查询字符串之前在C sharp中转换字符串,但它也立即失败。如何在javascript或c sharp中清除这个看似正确的字符串类型日期(字符串strDate)? SQL Output