2010-10-09 16 views
2
select * 
    from Advertisements 
where DepartureDate < DATEPART('dd.mm.yy', '09.10.2010'); 

,但我得到DATEPART不喜歡的工作我想那一定

消息1023,15級,狀態1,行 無效參數1指定日期部分。

在plsql中這是非常簡單的,這裏是如此複雜... 有人可以告訴我,我怎麼能得到比今天小的所有日期。

+1

嘿,我有沒有很多地方工作,因爲我認爲他們必須;) – slashmais 2010-10-09 18:46:27

回答

1

您可以使用它來獲取當前日期:

CONVERT(date, GETDATE()) 

documentation

有人可以告訴我,我怎麼能得到比今天小的所有日期。

SELECT * 
FROM Advertisements 
WHERE DepartureDate < CONVERT(date, GETDATE()) 
+0

對於任何新的SQL SERV呃2008年,這可能看起來有點混亂。可能值得指出的是,GETDATE()返回一個DATETIME數據類型。將它轉換爲DATE會截斷時間部分。 – 2010-10-11 07:55:56

1

您似乎很困惑DATEPARTFORMAT_DATE(反正它不存在)。

DATEPART提取日期的某個部分。完全是一部分。

比今天小的日期是< dbo.CropTime(getdate()),其中CropTime是可以用不同方式書寫的函數(如this question中描述的那些函數)。或者,如果您使用的是SQL Server 2008,它就像< cast(getdate() as date)一樣簡單。

1

請問這代碼真的在PL/SQL工作? T-SQL函數中的DATEPART用於提取日期的各個部分。

這會讓你知道現在的所有日期。

select * from Advertisements where DepartureDate < getdate() 

如果你打算硬編碼的日期(如您的示例代碼提示),你只需要的方式,SQL Server將理解格式化。例如。

select * from Advertisements where DepartureDate < '2010-10-09' 

我已經告訴日期格式的作品在每個服務器上,無論其本地化設置。這當然適用於我試過的每臺服務器上 - 但我很樂意被否決:-)

1

DatePart用於獲取日期的組件,例如月份,年份或日期。要得到比現在更小(更老)的日期,我會這樣做。

select * from Advertisements where DepartureDate < GetDate(); 

如果我想要的是昨天或之前的出發日期,我可以做到這一點。

select * from Advertisements where DepartureDate < Convert(DateTime,Convert(Char(10),GetDate(),121)); 

select * from Advertisements where DepartureDate < Convert(DateTime,floor(convert(int,GetDate()))) 
1

你在找什麼,我認爲是

select * 
from Advertisements 
where DepartureDate < Convert(Date, '09.10.2010', 102) 

或可能

SELECT * 
FROM Advertisements 
WHERE DepartureDate < Cast(CURRENT_TIMESTAMP as date)