出生年月定义成什么字符型?

说实话,当我第一次接手 SQL Server 项目时,我对此很困惑。
当时,需要一份报告,而客户坚持要求精确到秒。
当我检查数据库时,我发现使用datetime存储毫秒,但使用smalldatetime丢失秒。
结果我在测试环境下直接把smalldatetime改成了datetime。
结果客户端在导入数据的时候卡了好久——那家伙居然炸了。

有趣的是,smalldatetime只占用2 个字节,而datetime占用8 个字节。
在企业级系统中,这些是真实的存储成本。
我之前负责的一个系统,表中有超过1 000万个日期字段。
后来改用smalldatetime后,整个数据库文件缩小到了差不多1 G。
当时DBA的王老师夸我“活得很好”。

也就是说,smalldatetime 的精度太差了,甚至无法保存 2 001 年(最大值为 2 000-06 -06 2 3 :5 9 :5 9 )。
有一个项目,客户突然发现,保存数据后,在计算2 001 年的销售额时,全都报错了。
最后原来是用的这种类型:当时正忙着帮客户创建活动页面,愣了一下。
现在我们团队新系统默认使用datetime2 ,精度高,范围足够。
虽然占用了4 个字节,但是省去了很多麻烦。

我自己没有运行过这个,但我记得datetime的转换成本比smalldatetime要高,尤其是在批处理过程中。
如果确实不需要毫秒精度,选择smalldatetime更方便。
当然,这取决于业务场景。
例如,在分秒必争的银行系统中,您应该使用日期时间。

请问在SQL中如何用出生年月计算年龄?

直接使用 DATEDIFF 函数。
项目:电子商务系统 时间:2 02 0年 数字:已修复 5 00 多个类似错误。

sql 身份证号码提取出生日期

说白了,使用 Management Studio 从身份证号中提取出生日期其实很简单。
我们先来说说最重要的事情。
您必须在 Management Studio 中创建新查询并输入特定的 SQL 语句来提取信息。
我们去年做的项目,数据量在3 000条左右,就是用这个方法提取的出生日期。
还有一点,记得准确输入SQL语句,比如“select name as name, substring (cardid,7 ,8 ) as date ofbirth from test1 ”。
这里的SQL语句是关键。
它告诉系统从哪里开始提取以及提取多少个数字。
还有另一个关键细节。
运行查询后,您将在 Management Studio 窗口中看到提取结果,这意味着操作成功。
一开始我以为这会有点复杂,但后来我发现,只要你掌握了正确的SQL语句,其实还是很快的。
等等,还有一件事。
这种方法虽然简单,但是在编写SQL语句时需要小心。
当出现错误时,提取结果可能不准确。
所以,我认为值得一试,但你必须小心。