gpt4 book ai didi

sql-server - 获取今天创建的所有行

转载 作者:行者123 更新时间:2023-12-02 09:52:12 25 4
gpt4 key购买 nike

我无法获取今天创建的所有行。我使用了多个函数,如 getdate()、Cast、Convert 等,但都是徒劳。

这是我的基本查询:

SELECT timeId
FROM table_roaster_time_table
WHERE (user_id = @user_id) AND (DATEDIFF(d, date, GETDATE()) = 0)

我想从表 table_roaster_time_table 中获取 timeId,其中将提供 userid 并且日期是今天。

我该怎么做?

最佳答案

为了保留在 [date] 列上使用索引的机会(即使今天不存在,将来也可能存在),请尝试:

AND [date] >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
AND [date] < DATEADD(DAY, 1, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));

如果您使用的是 SQL Server 2008 或更高版本,您可以执行类似以下操作来缩短代码,但仍使用 [date] 上的索引(如果存在):

AND CONVERT(DATE, [date]) = CONVERT(DATE, CURRENT_TIMESTAMP);

编辑

由于您似乎很困惑为什么 3/6/2012 是 3 月 6 日而不是 6 月 3 日,我可能还建议不要手动插入不明确的日期文字,例如 '3/6/2012' 到数据库中,您将该列设置为默认列,例如:

ALTER TABLE dbo.table_roaster_time_table
ALTER COLUMN [date] DATETIME NOT NULL;

ALTER TABLE dbo.table_roaster_time_table
ADD CONSTRAINT df_date DEFAULT (CURRENT_TIMESTAMP)
FOR [date];

如果您要插入日期文字,那么至少使用安全且明确的格式,例如 YYYYMMDD:

INSERT dbo.table_roaster_time_table([date]) VALUES('20120603');

现在没有困惑了。

关于sql-server - 获取今天创建的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com