我的以下代码在“CAST”(' 10-10-2014' AS DATETIME)'中失败了,请有人协助吗?
SELECT Sum(poval)
FROM iesa_dwhs.dbo.vw_an_purch_bkb_010_sources vw_AN_Purch_BKB_010_Sources
WHERE Upper(plant) = Upper(('0LH0'))
AND dt BETWEEN Cast('10-10-2014' AS DATETIME) AND Getdate() - 7
AND Upper(matcat) = 'CODED'
答案 0 :(得分:1)
Read the documentation。明确你的转换:
select british_style_datetime = convert(datetime, '23-10-2015 20:15:10.123' , 103 )
如果您没有明确说明,则将根据所讨论的SQL Server实例的已配置设置完成转换。如果日期/时间字符串是非空的,转换可能会失败,如下所示:
select convert(datetime, '23-10-2015' )
生成(在我的SQL Server上):
Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type
resulted in an out-of-range value.
如果转换不明确,操作可能会成功,但您可能会得到一个不正确的值,例如
select convert(datetime, '11-10-2015' )
生成(在我的SQL Server上):
2015-11-10 00:00:00.000
答案 1 :(得分:0)
你确定它是日期时间吗?
安全投注是yyyy-mm-dd,因为它只有一个mm dd格式
这一切对我有用
select Cast('10-10-2014' AS DATETIME)
select Cast('2014-10-10' AS DATETIME)
select GETDATE()
select GETDATE() - 7
select 'yes'
where Cast('2014-10-15' AS DATETIME) between Cast('2014-10-10' AS DATETIME) AND Getdate() - 7
select 'yes'
where Cast('10-12-2014' AS DATETIME) between Cast('10-10-2014' AS DATETIME) AND (Getdate() - 7)
答案 2 :(得分:0)
如果您使用的是SQL Server 2014或更高版本,则可以使用DATEFROMPARTS功能。那你就不用担心格式了。