【问题标题】:Creating a custom data type with specific format创建具有特定格式的自定义数据类型
【发布时间】:2015-09-14 16:49:37
【问题描述】:

我正在从 Access 数据库迁移到 SQL Server 数据库,想知道是否可以为日期创建自己的数据类型。

我想让我的自定义日期类型的格式为 mm/dd/yyyy 而不是 yyyy/mm/dd。这可以吗?

【问题讨论】:

  • 在内部保存的日期总是相同的。但是您可以在选择日期时更改日期的表示
  • 如果我输入的是 mm/dd/yyyy 格式的数据呢?会自动转换成日期数据类型格式吗?
  • 来自客户端应用程序。 (例如:C#、VB.NET)我会将这些值作为DateTime 参数而不是string 发送到SQL Server。

标签: sql sql-server database sql-server-2012 sqldatatypes


【解决方案1】:

使用默认/内置数据类型来存储特定的数据类型。这将更加高效和可靠,因为 sql server 只允许存储有效数据(数据完整性)。

这也将允许您利用所有内置函数来处理该特定数据类型。在您的情况下,如果您使用 Sql Server 的 datetime 数据类型,您将能够使用所有 datetime 函数(DATEDIFF()DATEADD()DAY()YEAR()MONTH()DATENAME() 等)。

就您如何查看存储在数据库中的日期/日期时间值而言,您将始终拥有内置的数据时间函数来格式化适合您的日期值。

一旦您将日期/日期时间值存储在 sql server 数据库中,并且您希望将日期值查看为 mm/dd/yyyy 而不是 yyyy/mm/dd,只需执行以下操作:

SELECT CONVERT(VARCHAR(10), [DateColumn], 101)

可以使用自定义数据类型,但它们有一些非常奇怪的问题,尽可能避免使用它们:)

【讨论】:

  • 啊,好吧,改变我的用户输入数据的方式会更简单。我将把这个数据库连接到一个网站,这样人们就可以输入数据了。我只需要有下拉框而不是文本框。
  • 我忘了问——101 是干什么用的?
  • Google cast and convert 并查看 msdn 页面。它基本上是一个指定格式的数字代码。
  • 我不知道您在应用程序代码中使用什么语言,我知道在 C# 中我们有 DateTimePicker 的日期/日期时间值(在前端显示为日历以从中选择日期) 这允许用户只选择有效的日期值。
  • 101 是一种日期格式样式,当您使用 convert() 函数时,它有第三个可选参数即格式样式,只有当您在 SQL Server 的日期时间数据中有数据时,Microsoft 才会再次提供许多样式type 你可以在查看数据时使用第三个可选参数来格式化你的日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
相关资源
最近更新 更多