[英]DATEADD in dd-MM-yyyy format
我使用的是SQL Server 2005,我從用戶處以dd-MM-yyyy
格式獲取日期,限制為最多5天,因此用戶最多可以看到+ -5天的結果。
我嘗試了很多,但無法:
dd-MM-yyyy
轉換為yyyy-MM-dd
dd-MM-yyyy
添加天數 我的SQL查詢是:
SELECT
(convert(varchar(10), OrderDate, 105)) AS OrderDate
FROM
[Products] p
WHERE
((convert(varchar(10), OrderDate, 105)) BETWEEN
(DATEADD(dd, -3, '22-01-2014'))
AND
(DATEADD(dd, 3, '22-01-2014'))
)
在上面的查詢中,假設用戶輸入22-01-2014
作為日期,輸入3作為flexibleDays
(因此用戶可以看到從2014年1月19日到2014年1月25日的結果)。
如何在上述SQL查詢中以dd-MM-yyyy
格式添加天數?
我建議不要過度使用日期在字符串之間的轉換! 如果將DATE
或DATETIME
轉換為字符串-當然您不能在其中添加幾天-畢竟現在是字符串!
因此,如果您已經有一個DATE
或DATETIME
列,請使用它並將其數據類型保留下來!
嘗試編寫如下代碼:
-- define inputs from user - a date in string format, and a number of days
DECLARE @UserEntered VARCHAR(20) = '22-01-2014'
DECLARE @FlexiDays INT = 3
-- declare some helper variables - user input as DATE, from and to dates
DECLARE @UserEnteredDate DATE
DECLARE @FromDate DATE
DECLARE @ToDate DATE
-- determine the DATE the user entered, and the resulting "From" and "To" dates (as DATE)
SELECT @UserEnteredDate = CONVERT(DATE, @UserEntered, 105)
SET @FromDate = DATEADD(DAY, -1 * @FlexiDays, @UserEnteredDate)
SET @ToDate = DATEADD(DAY, @FlexiDays, @UserEnteredDate)
-- do your query without any messy conversions!
SELECT
OrderDate
FROM
[Products] p
WHERE
OrderDate BETWEEN @FromDate AND @ToDate
試試這個功能
CREATE FUNCTION SUBTRACT_DAYS( @date AS DATETIME, @days AS INT )
RETURNS DATETIME
BEGIN
RETURN DATEADD(dd, -@days, @date);
END
CREATE FUNCTION ADD_DAYS(@date AS DATETIME, @days AS INT )
RETURNS DATETIME
BEGIN
RETURN DATEADD(dd, +@days, @date);
END
SELECT dbo.SUBTRACT_DAYS('2014-01-22', 3),dbo.ADD_DAYS('2014-01-22', 3)
OP
Start End
2014-01-19 00:00:00.000 2014-01-25 00:00:00.000
嘗試這個:
DECLARE @UserEntered VARCHAR(20) = '22-01-2014'
DECLARE @FlexiDays INT = 3
DECLARE @UserEnteredDate DATE
DECLARE @FromDate DATE
DECLARE @ToDate DATE
dates (as DATE)
SELECT @UserEnteredDate = CONVERT(DATE, @UserEntered, 105)
SET @FromDate = DATEADD(DAY, -1 * @FlexiDays, @UserEnteredDate)
SET @ToDate = DATEADD(DAY, @FlexiDays, @UserEnteredDate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.