下面是我的存储过程,它接受两个日期参数,一个表示开始日期,另一个表示结束日期,它从连接表中获取一堆不同的数据:
@FromDate varchar(50),
@ToDate varchar (50)
SELECT DISTINCT
dbo.DefectInspection.DefectInspection_Id,
CONVERT(varchar(50), CAST(dbo.DefectInspection.DefectInspection_CreatedDate AS date), 34) AS CreatedDate
FROM
(bunch of tables)
WHERE
CAST(DefectInspection.DefectInspection_CreatedDate AS date)
BETWEEN CAST( @FromDate AS Date) AND CAST(@ToDate AS Date)
问题是,如果我将日期输入为MM-DD-YYYY
而不是第一天,它将只返回日期。这是一个问题,因为从客户端发送的日期样式始终是DD-MM-YYYY
使用所需输入:无数据返回n
使用月份格式-返回数据
2条答案
按热度按时间kgsdhlau1#
使用SQL(和其他语言)时,最好使用明确的格式,如
yyyy-mm-dd
还可以考虑使用
DATE
类型,而不是VARCHAR
lbsnaicq2#
虽然使用错误的数据类型是可怕的,但有时我们都必须处理不容易改变的问题。
您可以使用:
如果解析失败,TRY_CONVERT返回NULL。第三个参数(样式)105表示格式"dd-mm-yyyy",就像您使用它一样,110表示"mm-dd-yyyy"。