如何在数据库(sql server)中搜索日期格式为 dd/mm/yyyy h:mm:ss 的 dd/mm/yyyy 记录。
如果该列是日期,则工作正常,但是当我将其设置为日期时间并想查看数据库中是否有特定日期的记录时,它会有所不同,因为有时间。
那么如何仅当列是日期时间时才搜索日期。
这就是我正在使用的:
If SQL.conn.State = ConnectionState.Open Then
SQL.conn.Close()
End If
DateTime1.Format = DateTimePickerFormat.Custom
DateTime1.CustomFormat = "yyyy/MM/dd"
SQL.conn.Open()
Dim cmd As New SqlCommand("Select count(eid) from employees_payroll WHERE eid=" & employee_id & " and wday= '" & DateTime1.Text & "'", SQL.conn)
count = Convert.ToInt32(cmd.ExecuteScalar())
SQL.conn.Close()
DateTime1.CustomFormat = "yyyy-MM-dd"
最佳答案
几种解决方案。将日期时间转换为日期,这消除了时间
Select * from table where cast (column as Date) = '1 jan 2017'
第二,使用日期差异函数
Select * from table where datediff(day, column, '1Jan2017') = 0
第三,使用datediff和dateadd剥离时间部分
Select * from table
where dateadd(day, datediff(day, 0, column), 0) = '1Jan2017'
另外,与一天开始和结束时的午夜进行比较
Select * from table
where column >= '1 Jan 2017'
and column < '2 jan 2017'
最后一个解决方案仅允许在日期列上使用索引
编辑(解决乔尔在评论中提出的问题): 请理解,您用来将此查询传递给服务器的 C# 代码很容易受到所谓的“SQL 注入(inject)”的攻击。如果您的应用程序根据不受信任的用户的输入构建此 SQL,则会引发灾难。作为乔;他在下面的回答中建议,应修改 C# 代码以使用具有定义参数的命令对象,而不是动态构造的 SQL。然而,SQL 语句本身仍然可以是上面建议的任何解决方案。
关于sql-server - 选择日期(仅日期时间中的日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41529096/