Ahm*_*ato 5 sql sql-server-2005
我有这个查询
SELECT W.NUMBER,B.NAME,Br.NAME,W.WDATE,W.REPAIRSTATUS,W.REPAIRCOST,W.REMARK
FROM Work_Order AS W,Brands AS B,Branches AS Br
WHERE W.BRANDID = B.ID AND W.BRANCHID = Br.ID
AND CAST(WDATE as DATETIME) < CAST('09/18/2012' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
和系统响应
将 char 数据类型转换为 datetime 数据类型导致超出范围的 datetime 值。
也使用这个查询它给出了同样的错误
SELECT W.NUMBER,B.NAME,Br.NAME,W.WDATE,W.REPAIRSTATUS,W.REPAIRCOST,W.REMARK
FROM Work_Order AS W,Brands AS B,Branches AS Br
WHERE W.BRANDID = B.ID AND W.BRANCHID = Br.ID
ORDER BY CAST(W.WDATE AS DATETIME)
Run Code Online (Sandbox Code Playgroud)
WDATE 就像'09/03/2012',它是来自 jquery ui datepicker 的输入,具有 mm/dd/yyyy 日期格式
请帮助我我不知道如何解决它。
我正在使用 SQL Server 2005。
编辑:我用另一个 sql server 2005 尝试了相同的查询,它工作正常,所以请教如何使用 sql server 设置修复这个错误?
我假设您的 WDATE 是 varchar / char 而不是数据时间,您可以像这样转换它,但是我建议您将数据类型更改为日期时间。尝试这个:
SELECT W.NUMBER,B.NAME,Br.NAME,W.WDATE,W.REPAIRSTATUS,W.REPAIRCOST,W.REMARK
FROM Work_Order AS W,Brands AS B,Branches AS Br
WHERE W.BRANDID = B.ID AND W.BRANCHID = Br.ID
AND CONVERT( DATETIME, WDATE, 101) < CONVERT( DATETIME, '09/18/2012', 101)
Run Code Online (Sandbox Code Playgroud)
试试这个代码,它应该找到大多数无效日期
SELECT WDATE, W.NUMBER,B.NAME,Br.NAME,W.WDATE,W.REPAIRSTATUS,W.REPAIRCOST,W.REMARK
FROM Work_Order AS W,Brands AS B,Branches AS Br
WHERE W.BRANDID = B.ID AND W.BRANCHID = Br.ID
AND WDATE not like '[0-1][0-9]/[0-3][0-9]/20[0-1][0-9]'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21777 次 |
| 最近记录: |