我无法获得今天创建的所有行.我已经使用了多种功能,如getdate(),Cast,Convert白白等,但所有.
这是我的基本查询:
SELECT timeId
FROM table_roaster_time_table
WHERE (user_id = @user_id) AND (DATEDIFF(d, date, GETDATE()) = 0)
Run Code Online (Sandbox Code Playgroud)
我想timeId从将要提供的表table_roaster_time_table中获取userid,日期是今天.
我该怎么做呢?
Aar*_*and 26
为了保留在[date]列上使用索引的任何机会(即使今天不存在,也可能在将来),请尝试:
AND [date] >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
AND [date] < DATEADD(DAY, 1, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));
Run Code Online (Sandbox Code Playgroud)
如果您正在使用SQL Server 2008或更高版本,您可以执行类似这样的操作来缩短代码,但仍然可以使用索引([date]如果存在):
AND CONVERT(DATE, [date]) = CONVERT(DATE, CURRENT_TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)
编辑
由于您似乎很困惑,为什么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];
Run Code Online (Sandbox Code Playgroud)
如果您要插入日期文字,那么至少要使用安全且明确的格式,例如YYYYMMDD:
INSERT dbo.table_roaster_time_table([date]) VALUES('20120603');
Run Code Online (Sandbox Code Playgroud)
现在没有混乱.
| 归档时间: |
|
| 查看次数: |
37526 次 |
| 最近记录: |