【问题标题】:How to calculate age from birthday when creating a table in SQL?在 SQL 中创建表时如何从生日计算年龄?
【发布时间】:2021-12-08 18:05:58
【问题描述】:

这是我的代码

CREATE TABLE patients (
    PatientID int PRIMARY KEY NOT NULL,
    FirstName varchar(40) NOT NULL,
    LastName varchar(40) NOT NULL,
    PatientBirthday date,
    PatientAge int AS (year(CURRENT_TIMESTAMP) - year(PatientBirthday))

);

但是每当我运行它时,我都会在 AS 上突出显示语法错误

【问题讨论】:

  • 我正在使用访问权限
  • 避免计算字段。查询就是为此。

标签: sql ms-access


【解决方案1】:

我不认为你可以。计算字段中可用的表达式是有限的。如果您删除带有计算字段的行,创建表格,然后将其转移到设计视图并尝试手动添加计算字段,您将获得设计界面,它将为您提供可用功能的列表。列出了 YEAR,但没有列出 NOW,

我认为 NOW 是 ANSI current_timestamp 的 Access 等价物。如果你尝试 YEAR(now()) 你会看到这个:

YEAR([PatientBirthday]) 被编辑接受,所以这不是问题。对不起,我认为这是不可能的,至少不是你想要的方式。我认为您必须在 SELECT 或 UPDATE 期间计算插入后的年龄,或者您可以硬编码当前年份:2021 - YEAR([PatientBirthday])。我知道这不太理想。也可以将当前年份存储在单独的表中,并在数据库启动时使用 VBA 更新该表,然后在计算中使用该字段。

访问有时会很麻烦。如果您可以选择,我真的建议您使用功能齐全且符合 ANSI 的 DBMS。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 2012-02-06
    • 2018-07-23
    • 2010-09-08
    • 2017-07-02
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多