21

如何在 SQL Server 中将YYYY-MM-DD( ) 转换为日期?2012-08-17

我没有在帮助页面上看到这种格式:http: //msdn.microsoft.com/en-us/library/ms187928.aspx

4

5 回答 5

27

我认为风格没有。111(日本)应该工作:

SELECT CONVERT(DATETIME, '2012-08-17', 111)

如果由于某种原因这不起作用 - 你总是可以去掉破折号,然后你就拥有了完全可靠的 ISO-8601 格式 ( YYYYMMDD),它适用于 SQL Server 中的任何语言和日期格式设置:

SELECT CAST(REPLACE('2012-08-17', '-', '') AS DATETIME)
于 2012-11-07T20:32:13.133 回答
6

这可以解决问题:

SELECT CONVERT(char(10), GetDate(),126)
于 2012-11-07T20:32:44.373 回答
1

我也有类似的情况。这是我能够在“where”子句中获取日期范围的方法(对 marc_s 答案的修改):

where cast(replace(foo.TestDate, '-', '') as datetime) 
      between cast('20110901' as datetime) and
              cast('20510531' as datetime)

希望有帮助...

于 2014-09-17T19:51:20.307 回答
0

如果您的数据类型是 table.col 的 datetime ,则数据库存储数据包含两个部分:1(日期)2(时间)

只是在显示数据中使用转换或转换。

例子:

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
于 2012-11-08T02:44:21.023 回答
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
于 2019-08-02T08:28:19.123 回答