2014-01-22 3 views
1

이 잔인한 것 같아하지만 난 00 층 오늘날의 날짜 수 있었던 유일한 방법입니다 : 내가 사용 시도가장 효율적인 방법은

select CAST(FLOOR(CAST(CURRENT_TIMESTAMP AS float)) AS DATETIME) 

: 데이터베이스 수준에서 00.000 : 00

select FLOOR(getdate()) 

그러나 다음과 같은 메시지가 얻을 : 데이터 형식의 날짜에서

암시 적 변환 떠하는 것은 허용되지 않습니다. 실행하려면 CONVERT 함수를 사용하십시오. this query.

아무에게도 다른 방법을 권장 할 수 있습니까?

답변

3

SQL Server 2008을 사용하고 있으므로 date 데이터 형식을 사용할 수 있습니다.

declare @Today date 

set @Today = getdate() 

select @Today  

또는 변수가 없어도됩니다.

select cast(getdate() as date) 

값을 datetime으로 지정해야하는 경우 datetime으로 다시 캐스팅하십시오.

select cast(cast(getdate() as date) as datetime) 
+0

값을 읽고 날짜와 시간을 모두 확인할 수있는 함수가 있으므로 결과가 datetime이어야합니다. 날짜 데이터 유형이면 여전히 작동합니까? – JsonStatham

+0

아마 암시 적으로 변환 될 것이지만 단지'datetime'으로 다시 변환 할 수있을 것입니다. –

1

나는이 작업을 수행하는 방법이 많이 있습니다. 여기에 몇 가지 더 있습니다.

select cast(cast(CURRENT_TIMESTAMP as date) as datetime) 

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0) 

SELECT CAST(CAST(CURRENT_TIMESTAMP - 0.50000004 AS int) AS datetime) 

정상적으로 캐스트 된 날짜 버전을 사용합니다.

관련 문제