显示两个日期的记录,其中包含字符串数据类型 [英] display record with in two dates which is in string datatype

查看:62
本文介绍了显示两个日期的记录,其中包含字符串数据类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有人,



i有两个日期选择,在数据库中我以dd / MM / yyyy格式存储在varchar数据类型中。





所以,目前我选择date1为12/08/2012,date2为12/08/2012在MM / dd / yyyy formate中,所以没有数据显示但那天有10条记录。



i use:



 SELECT将(datetime,User_log.sign_in,103)转换为Sign_in,将(datetime,User_log.sign_out,103)转换为Sign_out,User_log.user_name,User_log.document_name,empl.ID FROM empl INNER JOIN 
User_log ON empl.name = User_log.user_name其中convert(datetime,sign_in,103)> =''{?date1}''和convert(datetime,sign_in,103)< =''{?date2}''





这里date1是fromdate而date2是to_date in MM / dd / yyyy。



if i选择12/08/2012和12/09/2012,所以它显示第8个日期的记录。



所以,问题是什么?





请HElp .......

Mitesh

解决方案





这个问题是由于查询中的日期转换convert(datetime,sign_in,103),

当您转换日期时,它会考虑日期与小时Eg:12/08/2012 00:00:00。所以查询选择日期为12/08/2012 00:00:00至12/09/2012 00:00:00。





1.)它将显示日期12/08/2012 00:00:00至12/09/2012 00:00:00(仅限24小时)的完整数据

2.)0th小时和第0分钟12/09/2012 00:00:00



试试这个查询



SELECT转换(datetime,User_log.sign_in,103)为Sign_in,将(datetime,User_log.sign_out,103)转换为Sign_out,User_log.user_name,User_log.document_name,empl.ID FROM empl INNER JOIN

User_log ON empl.name = User_log.user_name其中convert(varchar(10),convert(datetime,sign_in,103),103)> =''{?date1}''和convert(varchar(10),convert(datetime) ,sign_in,103),103)< = ''{?DATE2} ''

Dear All,

i have two date selection and in database i stored in varchar datatype with dd/MM/yyyy format.


so, at present when i select date1 as 12/08/2012 and date2 as 12/08/2012 in the MM/dd/yyyy formate so no data display but there are 10 records on that day.

i use :

SELECT      convert(datetime,User_log.sign_in,103) as Sign_in, convert(datetime,User_log.sign_out,103) as Sign_out, User_log.user_name, User_log.document_name, empl.ID FROM   empl INNER JOIN
User_log ON empl.name = User_log.user_name where  convert(datetime,sign_in,103)>=''{?date1}'' and convert(datetime,sign_in,103)<=''{?date2}'' 



here date1 is fromdate and date2 is to_date in MM/dd/yyyy.

if i select 12/08/2012 and 12/09/2012, so it display the record with in 8th date.

so, what the problem is ?


Please HElp.......
Mitesh

解决方案

Hi,

This problem is due to date convertion in query " convert(datetime,sign_in,103) ",
while you convert your date, it consider date with hour Eg: 12/08/2012 00:00:00. so the query select date between 12/08/2012 00:00:00 and 12/09/2012 00:00:00.


1.) it will display full data for date 12/08/2012 00:00:00 to 12/09/2012 00:00:00(24 hours only)
2.) 0th hour and 0th min for 12/09/2012 00:00:00

Try this query

SELECT convert(datetime,User_log.sign_in,103) as Sign_in, convert(datetime,User_log.sign_out,103) as Sign_out, User_log.user_name, User_log.document_name, empl.ID FROM empl INNER JOIN
User_log ON empl.name = User_log.user_name where convert(varchar(10),convert(datetime,sign_in,103),103)>=''{?date1}'' and convert(varchar(10),convert(datetime,sign_in,103),103)<=''{?date2}''


这篇关于显示两个日期的记录,其中包含字符串数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆