怎样可以从DateTime类型中提取日期 环境:MS-SQL2000(50分)

  • 主题发起人 主题发起人 小梅
  • 开始时间 开始时间

小梅

Unregistered / Unconfirmed
GUEST, unregistred user!
比如:
用GetDate()取得系统的日期时间,
请在SQL Server 2000有提取日期的函数吗?
 
什么意思?GetDate()不就是取得日期吗,如果要取得其中的分段信息如年份/月份/日等
等可用DatePart函数。
 
是这样:

GetDate() 得到的日期时间为 2001-5-28 10:20:30

怎样可以得到 2001-5-28???
 
你用FormatDateTime三。
var:
stryourdate:string;
yourdate:TDateTime;

stryourdate:=FormatDateTime('yyyy/mm/dd',Yourdate);
stryourdate就是你想要的。
 
用这个函数试试,不过已经转化为了字符
convert(char(10),getDate(),20)
 
TO:chinaplate

可我的入库时间是DataTime类型呀!
 
chinaplate,这个方法很好!另外可以将日期型的转化为实数,然后在比较
 
To:feier_jun

请你说说chinaplate的方法的好处?
 
DAY
返回代表指定日期的天的日期部分的整数。

语法
DAY ( date )

参数
date

类型为 datetime 或 smalldatetime 的表达式。

返回类型
int

注释
此函数等价于 DATEPART(dd, date)。

示例
此示例返回从日期 03/12/1998 后的天数。

SELECT DAY('03/12/1998') AS 'Day Number'
GO

下面是结果集:

Day Number
------------
12

在此示例中,以数字表示日期。注意:Microsoft® SQL Server™ 将 0 解释为 01/01/1900。

SELECT MONTH(0), DAY(0), YEAR(0)

下面是结果集。

----- ------ ------
1 1 1900
 
to:小梅
chinaplate的方法!得到的结果是一个‘YYYY-MM-DD’的字符串,
所以我认为比较好!
 
但是我想用程序控制。
入库日期为GetDate()所得值

用SQL进行查询时会有问题??

Var SysDate:TDate;

......
SysDate:=Now;

Sql.Add('Select * from OrderMain where InputDate=:SyeDate');
Parameters.ParamByName('SysDate').Value:=SysDate;
Open;


结果为空,实际存在。

原因是SysDate 的值是包含了Time部份。

可以用 Label1.Caption:=DateTimeToStr('SysDate); 显示出来。

所以用参数的话是不行。

不过可以将日期转换为字符串后再转换为日期,时间部分为0了。
但还是有问题,若是入库日期的时间部份不为0,则不能显示出来???


最后我用了最差的方法:
即: |InputDate-SysDate|<1

一例子:
Select * from OrderMain
Where InputDate-1<'2001-5-26'
and InputDate+1>'2001-5-26'

不知大家有何高见!^_^


 
你如果是用程序增加记录,那么可以在datetimepicker控件中设属性time为空
这样就不会出现详细的时间,只会出现如2000-01-01的类型
 
不好意思,跑题了。
我本意是在SQL2000的表有一字段为日期型,它的默认值为GetDate()。
得到的值有时间,我想用一个函数可以把时间去掉或置为0,
不知大家有何高见(请不要告诉在ADOBeforePost()事件中给字段赋值)
 
小家伙,你可以这样做:
Parameters.Parambyname('sysdate'):=StrtoDate(formatdatetime('ddddd',now()))
搞定它!
 
我觉得这些信息已经足够解决你的问题了
如果是在delphi里取值,trunc(dataset.fieldbyname('sysdate').asdatetime)
如果要在sql里取值,day(sysdate)
 
多人接受答案了。
 
后退
顶部