2015-02-26 5 views
0

Например, в базе данных «Библиотека» я хочу получить названия книг, имя и адрес заемщика в филиале под названием «Sharpstown», срок исполнения которого сегодня ?Как использовать системную дату или текущую дату в SQL Server

Это, как я сделал отборное заявление -

SELECT BOOK.Title,BORROWER.Name, BORROWER.Address 
FROM BORROWER,BOOK,LIBRARY_BRANCH,BOOK_LOANS 
WHERE BOOK.BookID = BOOK_LOANS.BookID AND 
     LIBRARY_BRANCH.BranchID = BOOK_LOANS.BranchID AND 
     BOOK_LOANS.CardNo = BORROWER.CardNo AND 
     LIBRARY_BRANCH.BranchName = 'Sharpstown' AND 
     BOOK_LOANS.DueDate = now() -- This is where I want to compare the dates 

Ошибкой является:

«теперь» не признанной встроенного имя функции.

ответ

2

Для SQL Server используйте getDate() вместо now(). Вы можете иметь дополнительные вопросы, в зависимости от типа данных BOOK_LOANS.DueDate, так что вы, возможно, придется CAST:

... and CAST(BOOK_LOANS.DueDate as date) = CAST(getDate() as date) 

«date» тип в SQL Server имеет Гранулярность/точность в день. По умолчанию getDate() возвращает значение типа «datetime», которое имеет степень детализации/точность миллисекунды.

+0

спасибо, что мне нужно больше узнать о литах и ​​датах. Еще раз спасибо :) –

1

Вы не можете использовать NOW в SQL Server. В SQL Server у нас есть GETDATE()

SELECT BOOK.Title,BORROWER.Name, BORROWER.Address 
FROM BORROWER,BOOK,LIBRARY_BRANCH,BOOK_LOANS 
WHERE BOOK.BookID = BOOK_LOANS.BookID 
    AND LIBRARY_BRANCH.BranchID = BOOK_LOANS.BranchID 
    AND BOOK_LOANS.CardNo = BORROWER.CardNo 
    AND LIBRARY_BRANCH.BranchName = 'Sharpstown' 
    AND BOOK_LOANS.DueDate = CONVERT(DATE, CAST(GETDATE() AS VARCHAR(12)), 105) 
+0

Оба ответа работали @Paresh, но можете ли вы объяснить, почему вы использовали типы данных здесь? –

+0

Когда вы запускаете этот CAST (GETDATE() AS VARCHAR (12)), вы получите только дату со временем как 00: 00: 00: 000 –

+0

О, спасибо @paresh sir. Еще один урок sql для добавления в мой ноутбук :) –

Смежные вопросы