Я думаю, что стиль нет. 111 (Япония) должен работать:
SELECT CONVERT(DATETIME, '2012-08-17', 111)
И если это по какой-то причине не работает - вы всегда можете просто вычеркнуть тире, а затем у вас есть абсолютно надежный формат ISO-8601 (YYYYMMDD), который работает для любого языка и формат даты в SQL Server:
SELECT CAST(REPLACE('2012-08-17', '-', '') AS DATETIME)
Ответ 2
Это сделает трюк:
SELECT CONVERT(char(10), GetDate(),126)
Ответ 3
У меня была аналогичная ситуация. Здесь, что я смог сделать, чтобы получить диапазон дат в предложении "where" (модификация ответа marc_s):
where cast(replace(foo.TestDate, '-', '') as datetime)
between cast('20110901' as datetime) and
cast('20510531' as datetime)
Надеюсь, что это поможет...
Ответ 4
если тип данных - это datetime таблицы .col, то данные хранилища базы данных содержат два частичных: 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