sql - SQL 表列上的这个 datediff 检查约束正在验证什么?

标签 sql sql-server database

任何人都可以让我知道下面这个声明正在验证的确切日期差异是什么 列检查约束?

DATEDIFF(millisecond,[MyDateColumn],
         DATEADD(day,DATEDIFF(day,(0),[MyDateColumn]),(0)))=(0)))

最佳答案

  • CAST(0 AS DATETIME)1900-01-01 00:00:00.000(DATETIME 数据类型的默认值) .整数 0 隐式转换为 DATETIME
  • datediff(day, (0), [MyDateColumn])是上面日期之间的天数差
  • dateadd(day,datediff(day,(0),[MyDateColumn]),(0)) 是指定日期的午夜。
  • datediff(millisecond,[MyDateColumn],dateadd(day,datediff(day,(0),[MyDateColumn]),(0))) 是从午夜到给定日期时间经过的毫秒数值(value)。

基本上它会检查列中的值是否在午夜。 (强制 DATETIME 数据类型充当 DATE 列的约束。)

关于sql - SQL 表列上的这个 datediff 检查约束正在验证什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25910762/

相关文章:

php - Amazon SNS 移动推送 - 如何发送/发布到多个终端节点?

sql - 如何删除具有特定列的行,这些行包含每个都有约束的重复值?

mysql - 如何在 SQL 的子查询中引用父查询中的表列?

sql - 动态 SQL 给出 "Incorrect Syntax Near ' +'"

mysql - 如何确保没有数据的类别仍然出现在 SQL 输出中

database - 在 Cassandra 中使用 Hinted Handoff 有什么意义,特别是对于一致性 > ANY?

C# Linq to SQL 无效转换异常

sql-server - 需要帮助从表创建分类帐

mysql - 如何优化此查询以不重复获取重复信息

mysql - 使用mysql查询将日期从 'yyyy-dd-mm'转换为 'yyyy-mm-dd'