我写了这个查询:
SELECT *
FROM w_tbl
WHERE DID NOT IN (SELECT DId FROM tbl_Assign)
AND CAST(MeasDateTime AS Date) = @dta
ORDER BY
CAST(MeasDateTime as DATE) DESC
因此,您可以看到我正在发送参数化查询。
所以我为24/09/2010 00:00:00
@dta
但是我收到了这个错误:
从租船人字符串转换日期和/或时间时转换失败。
我告诉你为什么我这样做以及我的目的:
我有一个日期时间列,我想只按日期选择/获取所有数据(即我不想明确获取日期时间,它必须只是根据日期)
答案 0 :(得分:0)
如果您只想按日期选择并且您有DateTime类型,请使用日期函数:
DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , @dta))
所以在你的情况下:
SELECT *
FROM w_tbl
WHERE DID NOT IN (SELECT DId FROM tbl_Assign)
AND DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , MeasDateTime)) = DATEADD ( dd , 0 , DATEDIFF ( dd , 0 , @dta))
ORDER BY
MeasDateTime DESC -- No need for CAST/CONVERT here, it will be ok either way
答案 1 :(得分:-1)
首先检查@dta值原因24/09/2010可能是错误的日期。请尝试使用2010年9月24日或2010年9月24日并检查。始终avoid confusion in dd/MM/yyyy and MM/dd/yyyy
使用MMM一个月。 SQL正确处理MMM的日期时间格式。像dd-MMM-yyyy。默认情况下,SQL使用美国标准,日期格式为MM / dd / yyyy。
感谢。