系统时间等于从数据库里查询出来的时间问题?

时间:2021-11-25 21:42:23
做一个打开网页,如果系统时间=从数据库里查询出来的时间就打开另一个页面。

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            '在此处放置初始化页的用户代码
            If Session("U_name") = "" Then
                Response.Write("<" + "script language=javascript>alert(""您尚未登陆![错误代码:001000]"");")
                Response.Write("window.self.location.href=""login.aspx"";</" + "script>")
                Response.End()
            Else         
                Dim time As String
                time = Format(Now, "yyyy-MM-dd")
                'Response.Write(time)
                Dim bsd As String // 应该定义的是数组吧
                mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path"))
                myCmd = New SqlClient.SqlCommand("select * from userwt ", mycon)
                mycon.Open()
                Dim objReader As SqlClient.SqlDataReader = myCmd.ExecuteReader()
                objReader.Read()
                bsd = Left$(objReader.Item("bsd"), 10).ToString
                mycon.Close()
                Response.Write(bsd)
                If (time = bsd) Then // 这块应该填写所查询出来的日期
                    Response.Write("<" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200');</" + "script>")
                End If
            End If
        End If
    End Sub

思路是这样,刚接触VB代码不太熟悉,请问具体代码怎么实现!

23 个解决方案

#1


有什么问题?

bsd =Format(objReader.Item("bsd"), "yyyy-MM-dd") 


  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/

#2


说的不清楚吗?就是系统时间= 从数据库里查询出来的时间,这个从数据库里查出来的数据不是一个,是好多

比如:我打开页面只要是今天过生日的人就打开另一个页面,bsd是数据库里生日的字段,人有好多,查出来的bsd也好

多,让系统时间=这个从数据库里查询出来的时间之其中一个,要是有就打开网页

#3


帮顶,接分

#4


如果数据库和运行软件在同一台机器上运行,数据库的当前时间就是系统当前时间,这个说法是没错的。
如果二者在不同的机器上运行,那么就不一定是了,有可能二者的时间不一致的。

#5


把两个时间格式化相同的 格式然后比较就行了 

#6


数据库里的时间是我存好的字段,就是把字段都查出来,和系统时间对比,如果数据库里所存的字段的时间包含当前的系统时间(说白了就要系统时间的月和日),就打开新的页面

 Dim time As String 
 time = Format(Now, "MM-dd") 
 'Response.Write(time) 
 Dim bsd As String //应该定义的是数组吧 
 mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path")) 
                myCmd = New SqlClient.SqlCommand("select * from userwt ", mycon) 
                mycon.Open() 
                Dim objReader As SqlClient.SqlDataReader = myCmd.ExecuteReader() 
                objReader.Read() 
                bsd = Mid$(objReader.Item("bsd"), 5,5).ToString 
                mycon.Close() 
                Response.Write(bsd) 
                If (time = bsd) Then //这块应该填写所查询出来的日期 
                    Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>") 
                End If 


#7


很难实现吗?关注!

#8


数据库是这么存的数据
id uname    bsd
1   xxx  1980-12-20 
2   xxx  1983-05-23 
3   xxx  1988-08-09
4   ...  ..........
是这样的
要的是SQL语句查处来的bsd里的数据我截取就要月-日,只要是包含系统时间的月—日,就出现别的页面,因为查处来的bsd有很多不是1个,所以我不会这块的代码!请高人指点! 

#9


Dim bsd As String //应该定义的是字符不是数组

#10


 bsd = Left$(objReader.Item("bsd"), 10).ToString 
改成
 bsd= Format(DateValue(objReader.Tables(0).rows(0).Item("bsd")), "yyyy-MM-dd").ToString 
取bsd列第一个时间
试试

select * from userwt 有N个时间,你取哪一个时间?

#11


我就是不知道用什么定义Dim bsd As String 这个bsd 
不知道bsd 怎么接这个查询出来的结果集,
不知道怎么便利这个结果集,
和这个结果集怎么和系统时间去比较,是包含还是等于

#12


objReader.Item("bsd")这样取数据是错误的

你要确定你要取哪一个时间才行 


select bsd from userwt  where  uname=xx or id=xx

#13


全部表的bsd字段的时间,就是拿表里每个人的bsd和当前的系统时间的MM-dd做比较(就是做个只要是打开网页如果有今天是过生日的人就弹出来一个提示页面,每个人的生日是以有的数据了)

#14


查出bsd等于今天日期的用户:
select * from userwt where datediff(day,bsd,getdate())=0

#15


如果是数据集比较
id uname    bsd 
1  xxx  1980-12-20 
2  xxx  1983-05-23 
3  xxx  1988-08-09 
4  ...  .......... 
你这样 
Dim time As String 
time = Format(Now, "yyyy-MM-dd") 

dim sql as string="select count(1) from userwt   where bsd='"& time &"'   "

执行SQL

如果结果大于1,就表示bsd时间中包含有time  然后转向

如果等于0,就不包含

#16


楼上说的,具体代码要怎么改啊
  Else        
                Dim time As String 
                time = Format(Now, "yyyy-MM-dd") 
                'Response.Write(time) 
                Dim bsd As String //应该定义的是数组吧 
             mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path")) 
                myCmd = New SqlClient.SqlCommand("select * from userwt ", mycon) 
                mycon.Open() 
                Dim objReader As SqlClient.SqlDataReader = myCmd.ExecuteReader() 
                objReader.Read() 
                bsd = Left$(objReader.Item("bsd"), 10).ToString 
                mycon.Close() 
                Response.Write(bsd) 
                If (time = bsd) Then //这块应该填写所查询出来的日期 
Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>") 
                End If 

#17


比如:我打开页面只要是今天过生日的人就打开另一个页面,bsd是数据库里生日的字段,人有好多,查出来的bsd也好 

多,让系统时间=这个从数据库里查询出来的时间之其中一个,要是有就打开网页


如果按照上面所说.我觉得你应该按照系统当前时间去数据库查询对应的数据,如果有则打开下一个页面.
而不是去查询所有生日字段再去跟当前时间对比.

#18


改成这样了没查到数据
Dim time As String
                time = Format(Now, "MM-dd")
                'Response.Write(time)

                mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path"))
                mycon.Open()
                Dim mycmd As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter("select count(1) from userwt  where bsd like '" & time & "'", mycon)  //bsd = '" & time & "'"的话报从字符串转换为 smalldatetime 数据类型时发生语法错误                Dim dt As DataSet = New DataSet
                mycmd.Fill(dt, "renttotal")
                Dim allsum = dt.Tables("renttotal").Rows.Count
                If allsum > 1 Then
                    Response.Write("<" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200');</" + "script>")
                End If
                mycon.Close()

#19




Dim mycmd As New SqlClient.SqlCommand
        mycmd.CommandText = "select count(0) from userwt  where  CONVERT(nvarchar(5),bsd,110) = '" & time & "'"
        mycmd.Connection = mycon
        Dim i As Integer = mycmd.ExecuteScalar()
        If i > 1 Then
            Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>")
        End If
        mycon.Close()




#20


如果用like的话记得加"%"

("select count(1) from userwt  where bsd like '%" & time & "'%", 

#21


就系统时间的月,日有用,数据库的字段是smalldatetime型的
select count(1) from userwt  where bsd like '%" & time & "%' 在SQL里比如是select count(1) from userwt  where bsd like '%03-27%' 查不出数据

数据库
id uname    bsd 
1  xxx  2009-03-27 00:00:00
2  xxx  1983-05-23 00:00:00
3  xxx  1988-08-09 00:00:00

#22


CONVERT(nvarchar(5),bsd,110)

注意这句

#23


上面问题解决,可是怎么便利结果集,付给liber.text,让他显示在页面上啊

 mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path"))
        Dim mycmd As New SqlClient.SqlCommand
        mycon.Open()
        mycmd.CommandText = "select tname from userwt where month(bsd)=datepart(Month,getdate()) and day(bsd)=datepart(Day,getdate())"
        mycmd.Connection = mycon
        'Dim name As String = mycmd.ExecuteScalar()
        'nametest.Text = name

        mycon.Close()

#1


有什么问题?

bsd =Format(objReader.Item("bsd"), "yyyy-MM-dd") 


  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/

#2


说的不清楚吗?就是系统时间= 从数据库里查询出来的时间,这个从数据库里查出来的数据不是一个,是好多

比如:我打开页面只要是今天过生日的人就打开另一个页面,bsd是数据库里生日的字段,人有好多,查出来的bsd也好

多,让系统时间=这个从数据库里查询出来的时间之其中一个,要是有就打开网页

#3


帮顶,接分

#4


如果数据库和运行软件在同一台机器上运行,数据库的当前时间就是系统当前时间,这个说法是没错的。
如果二者在不同的机器上运行,那么就不一定是了,有可能二者的时间不一致的。

#5


把两个时间格式化相同的 格式然后比较就行了 

#6


数据库里的时间是我存好的字段,就是把字段都查出来,和系统时间对比,如果数据库里所存的字段的时间包含当前的系统时间(说白了就要系统时间的月和日),就打开新的页面

 Dim time As String 
 time = Format(Now, "MM-dd") 
 'Response.Write(time) 
 Dim bsd As String //应该定义的是数组吧 
 mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path")) 
                myCmd = New SqlClient.SqlCommand("select * from userwt ", mycon) 
                mycon.Open() 
                Dim objReader As SqlClient.SqlDataReader = myCmd.ExecuteReader() 
                objReader.Read() 
                bsd = Mid$(objReader.Item("bsd"), 5,5).ToString 
                mycon.Close() 
                Response.Write(bsd) 
                If (time = bsd) Then //这块应该填写所查询出来的日期 
                    Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>") 
                End If 


#7


很难实现吗?关注!

#8


数据库是这么存的数据
id uname    bsd
1   xxx  1980-12-20 
2   xxx  1983-05-23 
3   xxx  1988-08-09
4   ...  ..........
是这样的
要的是SQL语句查处来的bsd里的数据我截取就要月-日,只要是包含系统时间的月—日,就出现别的页面,因为查处来的bsd有很多不是1个,所以我不会这块的代码!请高人指点! 

#9


Dim bsd As String //应该定义的是字符不是数组

#10


 bsd = Left$(objReader.Item("bsd"), 10).ToString 
改成
 bsd= Format(DateValue(objReader.Tables(0).rows(0).Item("bsd")), "yyyy-MM-dd").ToString 
取bsd列第一个时间
试试

select * from userwt 有N个时间,你取哪一个时间?

#11


我就是不知道用什么定义Dim bsd As String 这个bsd 
不知道bsd 怎么接这个查询出来的结果集,
不知道怎么便利这个结果集,
和这个结果集怎么和系统时间去比较,是包含还是等于

#12


objReader.Item("bsd")这样取数据是错误的

你要确定你要取哪一个时间才行 


select bsd from userwt  where  uname=xx or id=xx

#13


全部表的bsd字段的时间,就是拿表里每个人的bsd和当前的系统时间的MM-dd做比较(就是做个只要是打开网页如果有今天是过生日的人就弹出来一个提示页面,每个人的生日是以有的数据了)

#14


查出bsd等于今天日期的用户:
select * from userwt where datediff(day,bsd,getdate())=0

#15


如果是数据集比较
id uname    bsd 
1  xxx  1980-12-20 
2  xxx  1983-05-23 
3  xxx  1988-08-09 
4  ...  .......... 
你这样 
Dim time As String 
time = Format(Now, "yyyy-MM-dd") 

dim sql as string="select count(1) from userwt   where bsd='"& time &"'   "

执行SQL

如果结果大于1,就表示bsd时间中包含有time  然后转向

如果等于0,就不包含

#16


楼上说的,具体代码要怎么改啊
  Else        
                Dim time As String 
                time = Format(Now, "yyyy-MM-dd") 
                'Response.Write(time) 
                Dim bsd As String //应该定义的是数组吧 
             mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path")) 
                myCmd = New SqlClient.SqlCommand("select * from userwt ", mycon) 
                mycon.Open() 
                Dim objReader As SqlClient.SqlDataReader = myCmd.ExecuteReader() 
                objReader.Read() 
                bsd = Left$(objReader.Item("bsd"), 10).ToString 
                mycon.Close() 
                Response.Write(bsd) 
                If (time = bsd) Then //这块应该填写所查询出来的日期 
Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>") 
                End If 

#17


比如:我打开页面只要是今天过生日的人就打开另一个页面,bsd是数据库里生日的字段,人有好多,查出来的bsd也好 

多,让系统时间=这个从数据库里查询出来的时间之其中一个,要是有就打开网页


如果按照上面所说.我觉得你应该按照系统当前时间去数据库查询对应的数据,如果有则打开下一个页面.
而不是去查询所有生日字段再去跟当前时间对比.

#18


改成这样了没查到数据
Dim time As String
                time = Format(Now, "MM-dd")
                'Response.Write(time)

                mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path"))
                mycon.Open()
                Dim mycmd As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter("select count(1) from userwt  where bsd like '" & time & "'", mycon)  //bsd = '" & time & "'"的话报从字符串转换为 smalldatetime 数据类型时发生语法错误                Dim dt As DataSet = New DataSet
                mycmd.Fill(dt, "renttotal")
                Dim allsum = dt.Tables("renttotal").Rows.Count
                If allsum > 1 Then
                    Response.Write("<" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200');</" + "script>")
                End If
                mycon.Close()

#19




Dim mycmd As New SqlClient.SqlCommand
        mycmd.CommandText = "select count(0) from userwt  where  CONVERT(nvarchar(5),bsd,110) = '" & time & "'"
        mycmd.Connection = mycon
        Dim i As Integer = mycmd.ExecuteScalar()
        If i > 1 Then
            Response.Write(" <" + "script language=javascript>window.open('showbsd.aspx',null,'width=300,height=200'); </" + "script>")
        End If
        mycon.Close()




#20


如果用like的话记得加"%"

("select count(1) from userwt  where bsd like '%" & time & "'%", 

#21


就系统时间的月,日有用,数据库的字段是smalldatetime型的
select count(1) from userwt  where bsd like '%" & time & "%' 在SQL里比如是select count(1) from userwt  where bsd like '%03-27%' 查不出数据

数据库
id uname    bsd 
1  xxx  2009-03-27 00:00:00
2  xxx  1983-05-23 00:00:00
3  xxx  1988-08-09 00:00:00

#22


CONVERT(nvarchar(5),bsd,110)

注意这句

#23


上面问题解决,可是怎么便利结果集,付给liber.text,让他显示在页面上啊

 mycon = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("sql_path"))
        Dim mycmd As New SqlClient.SqlCommand
        mycon.Open()
        mycmd.CommandText = "select tname from userwt where month(bsd)=datepart(Month,getdate()) and day(bsd)=datepart(Day,getdate())"
        mycmd.Connection = mycon
        'Dim name As String = mycmd.ExecuteScalar()
        'nametest.Text = name

        mycon.Close()