回答
我想你想是这样的
DECLARE @str VARCHAR(50)= '1 year 12 months 2 days'
DECLARE @days INT= LEFT(@str, Charindex(' ', @str)),
@months INT = Substring(@str, Charindex('months', @str) - 3, 2),
@years INT = Substring(@str, Charindex('days', @str) - 3, 2);
WITH days_back
AS (SELECT Dateadd(day, [email protected], Cast(Getdate() AS DATE)) AS day_date),
month_back
AS (SELECT Dateadd(month, [email protected], day_date) AS month_date
FROM days_back)
SELECT Result = Dateadd(year, [email protected], month_date)
FROM month_back
这个逻辑我可以使用,但最大的战斗如何拆分字符串像需要从12年11个月10天分开几个月天 –
@YashShukla - 更新我的答案从字符串提取值 –
是的,像这样现在我们可以分开数字与第一空间,但我的价值是一个单一的字符串,所以有什么办法可以从单独的字符串中分离出来,如单独的年份月份和日期与“1年2个月2天”。你非常接近.. –
declare @fuzzy_date varchar(255) = '11 years 10 months 12 days'
declare @date date
declare @startdate date = '1999-12-31'
declare @today_to_before date = getdate()
declare @today_to_after date = getdate()
declare @years int, @months int, @days int, @foo varchar(255)
Set @years = left(@fuzzy_date, charindex('years', @fuzzy_date) - 1)
Select @fuzzy_date = right(@fuzzy_date, len(@fuzzy_date) - charindex('years', @fuzzy_date) - 5)
select @months = left(@fuzzy_date, charindex('months', @fuzzy_date) - 1)
Select @days = replace(right(@fuzzy_date, len(@fuzzy_date) - charindex('months', @fuzzy_date) - 6), 'days', '')
Select @years, @months, @days
Set @date = dateadd(yy, @years, @startdate)
Set @date = dateadd(mm, @months, @date)
Set @date = dateadd(dd, @days, @date)
Set @today_to_after = dateadd(yy, @years, @today_to_after)
Set @today_to_after = dateadd(mm, @months, @today_to_after)
Set @today_to_after = dateadd(dd, @days, @today_to_after)
Set @today_to_before = dateadd(yy, [email protected], @today_to_before)
Set @today_to_before = dateadd(mm, [email protected], @today_to_before)
Set @today_to_before = dateadd(dd, [email protected], @today_to_before)
Select @date,@today_to_after,@today_to_before
是这是我想要的,但只有一个改变istead开始日期,我们可以把当前日期作为参考,然后减去它来计算日期? –
@YashShukla你应该能够自己处理这个小调整? –
我am.Not没有经验的sql –
- 1. 在SQL Server 2008中将字符串转换为日期格式
- 2. 将字符串转换为SQL日期
- 3. 将日期转换为字符串SQL
- 4. 将字符串转换为日期。 SQL
- 5. SQL将字符串转换为日期
- 6. 将日期转换为SQL Server 2005中的字符串
- 7. 从字符串SQL Server日期转换
- 8. 转换日期为字符串,将字符串和逆变换为日期SQL
- 9. Microsoft SQL Server 2005将日期/时间转换为字符串
- 10. SQL Server将日期时间转换为字符串
- 11. 将日期字符串转换为SQL可读日期格式
- 12. SQL Server将数字转换为日期
- 13. 将字符串转换为日期并将日期转换回字符串
- 14. 将字符串转换为日期
- 15. SQL Server:将字符串转换为数字 - 从字符串转换日期和/或时间时转换失败
- 16. 如何将日期字符串转换为sql日期格式
- 17. 将字符串日期转换为SQL日期
- 18. SQL Server将字符串转换为datetime
- 19. 在SQL Server中,将'mmmm dd,yyy'字符串转换为日期时间格式
- 20. Bash - 将字符串转换为日期
- 21. Java:将字符串转换为日期
- 22. 将字符串转换为日期python
- 23. SimpleDateFormat将字符串转换为日期
- 24. Sqlite将字符串转换为日期
- 25. 将字符串转换为日期SparkR
- 26. 将字符串转换为日期
- 27. 将字符串转换为日期
- 28. Swift将字符串转换为日期
- 29. Android将字符串转换为日期
- 30. 将日期转换为字符串
你所期望的日期是? sql中的日期是时间点,而不是范围。另外,你正在使用哪些DBMS? sql server <> mysql。 –
我正在使用SQL服务器2012年,我只需要日期没有时间。任何日期格式有效 –
您可以比较这11年10个月12日从当前日期,然后计算日期 –