将时间从英国转换为美国格式

时间:2015-10-05 15:57:24

标签: sql tsql date datetime sql-server-2005

我的以下代码在“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'

3 个答案:

答案 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功能。那你就不用担心格式了。