如何将YYYY-MM-DD
(2012-08-17
)转换为SQL Server中的日期?
我没有在帮助页面上看到此格式:http://msdn.microsoft.com/en-us/library/ms187928.aspx
答案 0 :(得分:26)
我认为风格没有。 111(日本)应该工作:
SELECT CONVERT(DATETIME, '2012-08-17', 111)
如果由于某种原因不起作用 - 你可以随时删除破折号,然后你就拥有完全可靠的ISO-8601格式(YYYYMMDD
),适用于任何 SQL Server中的语言和日期格式设置:
SELECT CAST(REPLACE('2012-08-17', '-', '') AS DATETIME)
答案 1 :(得分:6)
这样可以解决问题:
SELECT CONVERT(char(10), GetDate(),126)
答案 2 :(得分:1)
我有类似的情况。这就是我能够在"中获得日期范围的地方"条款(修改marc_s'答案):
where cast(replace(foo.TestDate, '-', '') as datetime)
between cast('20110901' as datetime) and
cast('20510531' as datetime)
希望有帮助...
答案 3 :(得分:0)
如果你的数据类型是table.col的datetime,那么数据库存储数据包含两个部分:1(日期)2(时间)
只需在显示数据中使用convert或cast。
示例:
create table #test(part varchar(10),lastTime datetime)
go
insert into #test (part ,lastTime )
values('A','2012-11-05 ')
insert into #test (part ,lastTime )
values('B','2012-11-05 10:30')
go
select * from #test
A 2012-11-05 00:00:00.000
B 2012-11-05 10:30:00.000
select part,CONVERT (varchar,lastTime,111) from #test
A 2012/11/05
B 2012/11/05
select part,CONVERT (varchar(10),lastTime,20) from #test
A 2012-11-05
B 2012-11-05
答案 4 :(得分:0)
编写函数
CREATE FUNCTION dbo.SAP_TO_DATETIME(@input VARCHAR(14))
RETURNS datetime
AS BEGIN
DECLARE @ret datetime
DECLARE @dtStr varchar(19)
SET @dtStr = substring(@input,1,4) + '-' + substring(@input,5,2) + '-' + substring(@input,7,2)
+ ' ' + substring(@input,9,2) + ':' + substring(@input,11,2) + ':' + substring(@input,13,2);
SET @ret = COALESCE(convert(DATETIME, @dtStr, 20),null);
RETURN @ret
END