Как преобразовать дату и время до настоящего времени только (с набором времени к 0:00:00.000)

Это оператор not, за которым следует предварительный декремент на месте.

Так что, если pending было целым числом со значением 1:

val = 1;
--val; // val is 0 here
!val // evaluates to true
11
задан Stu 11 December 2009 в 17:42
поделиться

9 ответов

Для SQL Server 2005 и ниже:

CONVERT(varchar(8), @ParamDate, 112)    -- Supported way

CAST(FLOOR(CAST(@ParamDate AS float)) AS DATETIME)   -- Unsupported way

Для SQL Server 2008 и более поздних версий:

CAST(@ParamDate AS DATE)
14
ответ дан 3 December 2019 в 01:45
поделиться
declare @originalDate datetime
select @originalDate = '2009-06-24 09:52:43.000'

declare @withoutTime datetime
select @withoutTime = dateadd(d, datediff(d, 0, @originalDate), 0)

select @withoutTime
11
ответ дан 3 December 2019 в 01:45
поделиться
SELECT CAST(CONVERT(VARCHAR,GETDATE(),102) AS DATETIME)

SELECT CAST(CONVERT(VARCHAR(10),'2009-06-24 09:52:43.000',102) AS DATETIME)
6
ответ дан 3 December 2019 в 01:45
поделиться

Джеймс прав. Если вы начинаете со строки, и формат всегда будет таким, как вы говорите, тогда вы сохраните его простым и эффективным. Используйте LEFT (@StrDate, 10) и CONVERT это к вашему значению datetime. Готово.

Если ваша входная строка может быть любым допустимым форматом даты / времени, тогда вы должны сначала использовать CONVERT (datetime, @StrDate) . После этого вы используете то, что только что сказал Бинг, чтобы убрать часть времени.

2
ответ дан 3 December 2019 в 01:45
поделиться

Если у вас всегда будет дата в одном и том же формате, т.е. yyyy-MM-DD, вы можете получить первые 10 символов, если значение и вставьте то, что является эквивалентом времени 00: 00: 00.0000 для этой даты.

select left('2009-12-32 4:32:00',10)

Это очень эффективный способ сделать это, поскольку он не требует преобразования типов данных, ОДНАКО, он требует, чтобы дата всегда была отформатирована с использованием четырехзначного года и двухзначного числа дня и месяца.

1
ответ дан 3 December 2019 в 01:45
поделиться

преобразовать его в дату, а затем вы можно использовать CONVERT, чтобы получить только дату.

INSERT MyTable(Column1)
SELECT CONVERT(CHAR(8), CAST('2009-06-24 09:52:43.000' AS DATETIME), 112)
1
ответ дан 3 December 2019 в 01:45
поделиться

Разнообразные уловки:

  • Преобразуйте строку в дату и время, а затем верните ее обратно, используя необязательный параметр стиля в convert , чтобы преобразовать дату и время в строку. используя только часть даты
  • , используйте подстроку , чтобы отрезать конец
  • вокруг даты и времени, используя floor
0
ответ дан 3 December 2019 в 01:45
поделиться

Возможно, более чистый и портативный способ сделать это, но моя давняя идиома:

insert into tbl (date_column)
select convert(varchar, convert (datetime, '2009-06-24 09:52:43.000'), 101)
0
ответ дан 3 December 2019 в 01:45
поделиться

Удалите время и приведите его к дате:

select cast(left(yourstring, 10) as datetime)
-2
ответ дан 3 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: