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 201
和 2018.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 forYEAR()
中有一个“其他版本”下拉列表 - 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