如何用Select语句求出时间差?(50分)

  • 主题发起人 主题发起人 sjm
  • 开始时间 开始时间
S

sjm

Unregistered / Unconfirmed
GUEST, unregistred user!
Access数据库的A1表中有一个文本字段:'入店时间',里边填写的可能是类似:'2006-05-18 10:45:55'这样的时间字符串数据,如何用以下代码格式求出住店时间来?
with Adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select rdsj as 入店时间,xxxxx as 已住时间 from A1');
Open;
end;

说明:xxxxx即为要求助的代码;当前时间与入店时间之差 = 已住时间,要求精确到xx小时xx分即可。
 
只有入住时间?
'Select rdsj as 入店时间,(now-rdsj) as 已住时间 from A1'
 
当前时间嘛,比如当前时间为2006-06-14 10:34:35。
 
access里面你可以用(now-rdsj)*24就可以了,得到的是几点几小时,比如1.5hour
 
在帮助里看一下Access的时间函数不就知道了
 
呵呵,正好,我昨天写了一个类似的:
--------------------
update bill_data
set
out_product_count=(out_product_count + 1)
,fact_product_count=((out_product_count+1)/( cast(( getdate() - start_time) as real)*24))
WHERE
start_time = end_time"
and"
bill_id =
(SELECT product_bill_id "
FROM product_bill "
where bill_nbr = 'M1')
----------------------------
这是更新bill_data中的out_product_count(产品数量)和fact_product_count(每小时生产数量)。生产时间由cast(( getdate() - start_time) as real)*24)得到生时间(start_time是表中的开始生产的时间)
 
不好意思,我是在Sql Server上写的。
 
SELECT CONVERT(Varchar(20),GETDATE()-入店時間,108) FROM A1
 
你在access可以这样写得到入住小时数:
(now() - rdsj)*24
 
先谢谢以上各位的帮助,但:
1. 声明一下,我用的是Access2000数据库,不是SQL Server 2000。
2. rdsj本身是文本型字段,(now-rdsj)*24会因类型不对而报错。
3. 我试着用DateDiff()函数,但因对该函数不熟悉老是报错。
4. 还是希望以SQL.Add('Select rdsj as 入店时间,xxxxx as 已住时间 from A1');的格式得到'xx小时xx分钟'作为'已住时间'的值。
谢谢指教!
 
你的入店日期怎么会是文本??太怪了把
 
SQL Server 帮助里有 函数:datediff
具体实现就不用明说了吧
 
Select rdsj as 入店时间,yzsj as 已住时间 datediff( hh,starttime , endtime) as '住店时长(单位:小时)' from A1
Have a try, shoud be no problem!
 
已经搞定了,谢谢各位!
 
后退
顶部