我的SQL查询有问题。我得到以下查询工作,这非常基本:
SELECT *
FROM table1
WHERE Date = CURDATE()
table1中有一列名为h_id
,table2
列中的列h_id
和name
我想加入这两个表,以便我从当前日期获得表2中的名称。
我尝试了这个,但它似乎无法正常工作
SELECT t2.name, t1.field2
FROM table1 t1
INNER JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.Date = CURDATE( )
答案 0 :(得分:7)
可能区分大小写。
或
table1有field2列吗?
如果不是/那么,根据你的问题,试试这样:
SELECT t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.h_id = t2.h_id
WHERE t1.Date = CURDATE()
另一种可能性是where子句,试试这样:
SELECT t2.name
FROM table1 t1
INNER JOIN table2 t2 ON t1.h_id = t2.h_id
WHERE convert(varchar, t1.Date, 112) = convert(varchar, getdate(), 112)
最后一种可能性是没有任何h_id与table1和table2相等。
答案 1 :(得分:2)
尝试删除WHERE t1.Date = CURDATE( )
并查看您的记录是否已返回。
如果是,您的CURDATE( )
存在问题,请尝试使用getdate()或尝试格式化日期
答案 2 :(得分:2)
SQL Server不支持curdate()
。这是针对MySQL的。
适当的功能是getdate()
以下是官方documentation
的链接修改强>
正如您在评论中所说,如果getdate()
不起作用,那么您正在使用MySQL。试试这个:
SELECT t2.name, t1.field2
FROM table1 t1
INNER JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE date(t1.Date) = date(CURDATE())
答案 3 :(得分:0)
尝试:
SELECT t2.name, t1.field2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.[Date] = GETDATE( )
或者(MySQL):
SELECT t2.name, t1.field2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.`Date` = CURDATE( )