我有一张桌子列出了人们的出生日期(目前是nvarchar(25))
如何将其转换为日期,然后计算年龄?
我的数据如下
ID Name DOB
1 John 1992-01-09 00:00:00
2 Sally 1959-05-20 00:00:00
Run Code Online (Sandbox Code Playgroud)
我想看看:
ID Name AGE DOB
1 John 17 1992-01-09 00:00:00
2 Sally 50 1959-05-20 00:00:00
Run Code Online (Sandbox Code Playgroud) 我正在制作一个计算'秒前'的javascript计数器.我有时间在JS时间对象中,我在堆栈溢出时发现了一个"时差"功能片段,但它显示"2小时前".如何让它显示"5小时10分37秒前".
这是我正在使用的:
此函数将某些内容的当前时间和时间戳转换为"20秒前"而不是隐藏日期:
function timeDifference(current, previous) {
var msPerMinute = 60 * 1000;
var msPerHour = msPerMinute * 60;
var msPerDay = msPerHour * 24;
var msPerMonth = msPerDay * 30;
var msPerYear = msPerDay * 365;
var elapsed = current - previous;
if (elapsed < msPerMinute) {
return Math.round(elapsed/1000) + ' seconds ago';
} else if (elapsed < msPerHour) {
return Math.round(elapsed/msPerMinute) + ' minutes ago';
} else if (elapsed < msPerDay ) {
return Math.round(elapsed/msPerHour ) + ' …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何使用年,月和日计算T-SQL中的年龄
在我正在进行的项目中,我被要求在他们加入系统时计算一个人的年龄; 在互联网上查看之后,我发现了各种方法可以做到这一点,但是当涉及到闰年时,大多数都有轻微的问题.
下面的解决方案是我如何计算过去/年龄的年数.希望这有助于其他人
以下代码返回特定数据库中的年龄。
我需要添加什么才能获得准确的日期(以年、月、日为单位)?
<%= DateDiff("yyyy",rs("Dateofbirth"),date)%>
Run Code Online (Sandbox Code Playgroud)
即结果应为 12 岁 6 个月 8 天。
有没有一种方法可以根据今天的日期和生日计算某人的年龄,然后以以下方式显示:
If a user is less than (<) 1 year old THEN show their age in MM & days.
Example: 10 months & 2 days old
If a user is more than 1 year old AND less than 6 years old THEN show their age in YY & MM & days.
Example: 5 years & 3 months & 10 days old
If a user is more than 6 years old THEN display their age in YY.
Example: 12 years
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,用户输入两个日期.计划的开始日期和计划的结束日期.我们必须采用这些日期,并根据差异填充4个字段.
所以,让我们说他选择2010年1月1日作为开始,2011年3月2日作为结束,我们需要最终:
年:1个月:2周:0天1
意思是总持续时间为1年,2个月和1天.
有这样做的标准方法吗?或者我是否需要编写一个具有很多非常棘手的逻辑的方法来解决它?我希望我很幸运,并且会有一个date-diff类型.Net类可用.
可能重复:
如何使用年,月和日计算T-SQL中的年龄
我只是尝试使用birthdate变量来计算年龄(以年为单位)
1932-04-29 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
和SQL Server中的SYSDATETIME(),其中
SELECT year(Sysdatetime() - Birthdate) as Age
Run Code Online (Sandbox Code Playgroud)
产生(令人惊讶):1980年
我错过了什么?我期望得到80!
我有这个触发器:
CREATE trigger [dbo].[DeriveTheAge] on [dbo].[Student]
after insert,update
as
begin
declare @sid as int;
declare @sdate as date;
select @sid= [Student ID] from inserted;
select @sdate=[Date of Birth] from inserted;
commit TRANSACTION
if(@sdate is not null)
begin
update Student set Age=DATEDIFF(YEAR,@sdate,GETDATE()) where [Student ID]=@sid;
end
print 'Successfully Done'
end
Run Code Online (Sandbox Code Playgroud)
如它所示,触发器会自出生日期起自动计算派生属性"年龄".但是当我执行插入操作时出现此错误:
(1 row(s) affected)
Successfully Done
Msg 3609, Level 16, State 1, Line 1
The transaction ended in the trigger. The batch has been aborted.
Run Code Online (Sandbox Code Playgroud)
最初我避免了这个错误,因为尽管出现错误,行仍在更新.但是现在当我从FORNT END插入记录时,记录不会更新.相反,它会抛出此异常:
有人可以帮帮我吗?
顺便说一句,我的是SQL Server 2008 …
可能重复:
如何使用年,月和日计算T-SQL中的年龄
这似乎很简单,但它似乎对我不起作用.我想根据SQL中的两个日期计算某人的年龄.
我做了DATEDIFF(年,出生日期,参考日期)并且它并不总是给我正确的年龄.
例如
DATEDIFF(year,'1981-07-05',2011-07-01')
Run Code Online (Sandbox Code Playgroud)
给30,虽然它应该仍然是29.有没有办法做到这一点?
谢谢,
date ×5
sql-server ×5
sql ×4
.net ×1
asp-classic ×1
c# ×1
derived ×1
javascript ×1
jquery ×1
select ×1
t-sql ×1
time ×1
timespan ×1
triggers ×1
vbscript ×1