SQL 其中 datetime 列等于今天的日期?

Posted

技术标签:

【中文标题】SQL 其中 datetime 列等于今天的日期?【英文标题】:SQL where datetime column equals today's date? 【发布时间】:2012-08-10 22:05:41 【问题描述】:

如何从创建日期为今天日期的数据库中获取记录?

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE DATE(Submission_date) = DATE(NOW())

这在使用 sql server 2000 时不起作用,提交日期是日期时间字段

【问题讨论】:

可能重复:Get row where datetime column = today, Comparing results with today's date? 日期函数通常是特定于数据库的。您使用的是哪个数据库? @marc_s 和Submission_date 的数据类型。 编辑: 它在标题中,但我们应该确认它不是Date 类型:) 没有我得到的日期是无法识别的功能 @JIM:SQL Server中没有DATE()内置函数……他需要做一个CAST(... AS DATE) 【参考方案1】:

看起来您正在使用 SQL Server,在这种情况下,GETDATE()current_timestamp 可能会对您有所帮助。但是您必须确保与系统日期进行比较的日期格式匹配(时区、粒度等)

例如

where convert(varchar(10), submission_date, 102) 
    = convert(varchar(10), getdate(), 102)

【讨论】:

得到了 2 个不等价的字符串:Jun 7 2012018.06.07 请解释一下102是什么意思 它指的是CONVERT使用的日期和时间样式(docs.microsoft.com/en-us/sql/t-sql/functions/…) 注意:要使用 yyyy-mm-dd 格式,请使用 120 而不是 102。【参考方案2】:

你可以试试这个吗?

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE CAST(Submission_date AS DATE) = CAST(GETDATE() AS DATE)

T-SQL 并不像 C# 那样真正具有“隐含”转换 - 您需要显式使用 CAST(或 CONVERT)。

另外,使用GETDATE()CURRENT_TIMESTAMP 获取“现在”日期和时间。

更新:因为您使用的是 SQL Server 2000 - 到目前为止,这些方法都不起作用。试试这个:

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET_users] 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, submission_date)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

【讨论】:

他使用的是SQL Server 哎呀,我连接到 2000 第一部分在 SQL Server 2016 上非常适合我。谢谢!【参考方案3】:

可能还有另一种方法,但这应该可行:

SELECT [Title], [Firstname], [Surname], [Company_name], [Interest] 
FROM [dbo].[EXTRANET] 
WHERE day(Submission_date)=day(now) and 
     month(Submission_date)=month(now)
     and year(Submission_date)=year(now)

【讨论】:

对不起,复制/粘贴错误(当全部在一行时很困难)...为 EXTRANET_users 更改 EXTRANET 然后它应该可以工作 @marc_s: 年份等在 SQL Server 2000 中可用:msdn.microsoft.com/en-us/library/aa258863(v=sql.80).aspx @davek:没错!嗯....奇怪...在2012 docs for YEAR() 中有一个“其他版本”下拉列表 - SQL Server 2000 未在此处列出 - 奇怪.....【参考方案4】:

简单的出路是使用这样的条件(使用期望的日期> GETDATE()-1)

您的 sql 语句“特定日期”> GETDATE()-1

【讨论】:

这并不能回答问题,因为这仅在没有日期晚于当天的情况下才有效,但是这很有用,并且刚刚对我有所帮助。【参考方案5】:

获取记录创建日期为今天的所有记录使用 WHERE 子句后的代码

WHERE  CAST(Submission_date AS DATE) = CAST( curdate() AS DATE)

【讨论】:

以上是关于SQL 其中 datetime 列等于今天的日期?的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为 Datetime

从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为 Datetime

如何查询日期时间列 - MS SQL 2008

SQL数据库时间差

如何将当前日期和时间插入到具有 DateTime 类型列的 SQL Server 表中?

从 varchar 到 datetime 的 SQL 转换