select *
from Advertisements
where DepartureDate < DATEPART('dd.mm.yy', '09.10.2010');
但是我得到了
Msg 1023,Level 15,State 1,Line 1 为datepart指定的参数1无效。
plsql中的这个非常简单,这里很复杂...... 有人能告诉我,我怎样才能得到比今天更小的所有日期。答案 0 :(得分:1)
您似乎将DATEPART
与FORMAT_DATE
混淆(无论如何都不存在)。
DATEPART
提取日期的某些部分。恰好是一部分。
比今天小的日期是< dbo.CropTime(getdate())
,其中CropTime是一个可以用不同方式编写的函数(例如this question中描述的那些)。
或者,如果您使用的是SQL Server 2008,它就像< cast(getdate() as date)
一样简单。
答案 1 :(得分:1)
您可以使用它来获取当前日期:
CONVERT(date, GETDATE())
请参阅documentation。
有人能告诉我,我怎样才能得到比今天更小的所有日期。
SELECT *
FROM Advertisements
WHERE DepartureDate < CONVERT(date, GETDATE())
答案 2 :(得分:1)
该代码真的可以在PL / SQL中运行吗? T-SQL函数中的DATEPART用于提取日期的各个部分。
这将在此之前为您提供所有日期。
select * from Advertisements where DepartureDate < getdate()
如果您计划对日期进行硬编码(如示例代码所示),您只需要以SQL Server理解的方式进行格式化。例如
select * from Advertisements where DepartureDate < '2010-10-09'
我被告知日期格式适用于每台服务器,无论其本地化设置如何。它肯定适用于我尝试过的每台服务器 - 但我很高兴被推翻: - )
答案 3 :(得分: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())))
答案 4 :(得分:1)
我想要的是
select *
from Advertisements
where DepartureDate < Convert(Date, '09.10.2010', 102)
或可能
SELECT *
FROM Advertisements
WHERE DepartureDate < Cast(CURRENT_TIMESTAMP as date)