Это оператор not, за которым следует предварительный декремент на месте.
Так что, если pending
было целым числом со значением 1:
val = 1;
--val; // val is 0 here
!val // evaluates to true
Для 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)
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
SELECT CAST(CONVERT(VARCHAR,GETDATE(),102) AS DATETIME)
SELECT CAST(CONVERT(VARCHAR(10),'2009-06-24 09:52:43.000',102) AS DATETIME)
Джеймс прав. Если вы начинаете со строки, и формат всегда будет таким, как вы говорите, тогда вы сохраните его простым и эффективным. Используйте LEFT (@StrDate, 10)
и CONVERT
это к вашему значению datetime. Готово.
Если ваша входная строка может быть любым допустимым форматом даты / времени, тогда вы должны сначала использовать CONVERT (datetime, @StrDate)
. После этого вы используете то, что только что сказал Бинг, чтобы убрать часть времени.
Если у вас всегда будет дата в одном и том же формате, т.е. yyyy-MM-DD, вы можете получить первые 10 символов, если значение и вставьте то, что является эквивалентом времени 00: 00: 00.0000 для этой даты.
select left('2009-12-32 4:32:00',10)
Это очень эффективный способ сделать это, поскольку он не требует преобразования типов данных, ОДНАКО, он требует, чтобы дата всегда была отформатирована с использованием четырехзначного года и двухзначного числа дня и месяца.
преобразовать его в дату, а затем вы можно использовать CONVERT, чтобы получить только дату.
INSERT MyTable(Column1)
SELECT CONVERT(CHAR(8), CAST('2009-06-24 09:52:43.000' AS DATETIME), 112)
Разнообразные уловки:
convert
, чтобы преобразовать дату и время в строку. используя только часть даты
, чтобы отрезать конец floor
Возможно, более чистый и портативный способ сделать это, но моя давняя идиома:
insert into tbl (date_column)
select convert(varchar, convert (datetime, '2009-06-24 09:52:43.000'), 101)
Удалите время и приведите его к дате:
select cast(left(yourstring, 10) as datetime)