关于日期类型的问题

thinking_man 2000-06-23 04:26:00
我用Query查询SQL SERVER服务器上的数据库数据,
我想写一个SQL 语句,其中包含对时间的控制,我的时间是从Tdatetimepicker中得到,
SQLS:=‘SELECT * FROM TABLE1 ’
SQLS:=SQLS+‘WHERE TABLE1.TIME1>=’+???
请各位大侠指导一下。
...全文
215 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
meijg 2000-07-03
  • 打赏
  • 举报
回复
wingsun和halfone都是对的,这要取决于你的系统设置,在区域设置里,日期的分割符,还有一种是 .,一般都是'-'
halfone 2000-07-03
  • 打赏
  • 举报
回复
完全同意:wingsun
不过可能是FormatDateTime('MM"/"DD"/"YYYY" "HH":"NN":"SS"',Now());吧!
Wingsun 2000-07-03
  • 打赏
  • 举报
回复
Sorry.错了
SQLS:=‘SELECT * FROM TABLE1 ’"
SQLS:=SQLS+‘WHERE TABLE1.TIME1>="’+FormatDateTime('YYYY"-"MM"-"DD" "HH":"NN":"SS"',Now())+'"';
Wingsun 2000-07-03
  • 打赏
  • 举报
回复
没有那么复杂,使用FormatDateTime一切搞定。
SQLS:=‘SELECT * FROM TABLE1 ’"
SQLS:=SQLS+‘WHERE TABLE1.TIME1>=’+FormatDateTime('YYYY"-"MM"-"DD" "HH":"NN":"SS"',Now());
chenjian 2000-07-03
  • 打赏
  • 举报
回复
我给你部分原码:
TDateTime Present;
Word StartYear, StartMonth, StartDay, EndYear, EndMonth, EndDay;
String sPayOut, sStartMonth, sStartDay, sStartTime, sEndMonth, sEndDay, sEndTime;

BitBtnPrn->Enabled = True;
Present = DTPPayStart->Date;
DecodeDate(Present, StartYear, StartMonth, StartDay);
Present = DTPPayEnd->Date;
DecodeDate(Present, EndYear, EndMonth, EndDay);
if ((EndYear < StartYear)||((EndYear == StartYear)&&(EndMonth < StartMonth)) ||((EndYear == StartYear)&&(EndMonth == StartMonth)&&(EndDay < StartDay)))
ShowMessage("结束时间不能小于开始时间!请重新输入。");
else
{
if (StartMonth < 10)
sStartMonth = "0"+IntToStr(StartMonth);
else sStartMonth = IntToStr(StartMonth);
if (StartDay < 10)
sStartDay = "0"+IntToStr(StartDay);
else sStartDay = IntToStr(StartDay);
sStartTime = sStartMonth + "/" + sStartDay + "/" + IntToStr(StartYear);

if (EndMonth < 10)
sEndMonth = "0"+IntToStr(EndMonth);
else sEndMonth = IntToStr(EndMonth);
if (EndDay < 10)
sEndDay = "0"+IntToStr(EndDay);
else sEndDay = IntToStr(EndDay);
sEndTime = sEndMonth + "/" + sEndDay + "/" + IntToStr(EndYear);

sPayOut = "Select * From Table_Name where TimeFeild >= '"+sStartTime+"' and TimeFeild <= '"+sEndTime+"'"

如还有不明白请与我联系:chengjian712@sina.com
holoboy 2000-06-24
  • 打赏
  • 举报
回复
sql中还有一些时间型的函数,例如 datename,datepart等,shylsz的方法也许会出现这样的问题,sql的month是用E文表示的,datetimepicker.date返回的是1...12的数值,
可以这样,用decodedatetime()对datetimepicker.date进行分解,例子如下
var
year,month,day:word;
myday:datetime;
begin
myday := datetimepicker.date;
decodedatetime(mydate,year,month,day);
with query1 do
begin
sql.clear;
sql.add('select * from table1 where datepart(year,table1.datetime)>= year + and datepart(month,table1.datetime)>= month + and datepart(day,table1.datetime)>= day');
大致意思是这样,不过这个程序肯定通不过,因为还需要对month进行一些转换,还有对于
Time进行操作的问题,思路是这样,还有不明白的E我,给你详细清淡。



















chinacat9910 2000-06-23
  • 打赏
  • 举报
回复
query1.string:='select * from table1 where table1.time1>='"+datatimetostr(datepicker1.date)+"'"
zhouzq 2000-06-23
  • 打赏
  • 举报
回复
用RX的TDBDATEEDIT控件。
SQLS:=SELECT * FROM TABLE1 WHERE TABEL1.TIME1 >= :DATE1;
在QUERY 的OPEN 前执行
PARAMBYNAME('DATE1').ASDATETIME :=DBDATEEDT.DATE;
shylsz 2000-06-23
  • 打赏
  • 举报
回复
SQLS:=‘SELECT * FROM TABLE1 ’
SQLS:=SQLS+‘WHERE TABLE1.TIME1>=:aa’
query1.close;
query1.ParamByName('aa').asdate:=datetimepicker.date;
query1.sql.text:=sqls;
query1.open;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧