【问题标题】:Get date from int (YYYYMMDD)从 int 获取日期 (YYYYMMDD)
【发布时间】:2016-12-09 07:50:49
【问题描述】:

几个月前我犯了一个错误,我不得不为以下问题找到解决方法:

我在我的 SQL Server 数据库 (YYYYMMDD) 中以通用格式将日期保存为整数。我想让我的 select 语句给我一个格式的整数,对于用户来说,它看起来像一个日期(甚至是一个真正的日期类型),所以我可以将接收到的数据表直接用作我的 DataGridView 的数据源。

  • 我不想使用客户端格式
  • 让我们调用表myTable 和整数/日期列myIntDate
  • myIntDate 可以是NULL
  • myIntDate-value 示例:2016 年 8 月 3 日的 20160803

【问题讨论】:

  • 标记使用的 dbms。 (在日期/时间方面,许多 dbms 产品与 ANSI SQL 相去甚远。)
  • 对不起,忘记放了!我正在使用 TSQL (Microsoft) @dfundako 我有,但我很难为搜索找到好的关键字。
  • 我在 Google sql server convert int to date yyyymmdd 上搜索结果是正确答案。

标签: sql-server database tsql date datetime


【解决方案1】:
Select cast(cast(20160729 as varchar(10)) as date)

退货

2016-07-29

或者

 Select cast(left(20160729,8) as date)

【讨论】:

  • 不需要将其转换为VARCHAR(10)VARCHAR(8) 就可以了
  • 这似乎很容易。如果你是对的,我已经完成了编码!看看它是如何处理 NULL 值的
  • @luke 它只会返回一个 NULL 值。如果输入为空。如果您需要默认日期而不是 null,请将其包装在 isnull 中。
  • @luke 一个空值将返回一个空日期
  • @Luke 转换为日期需要一个字符串,否则您将收到显式转换错误。 SQL 足够聪明,可以在日期中使用多种字符串格式,即 '7/29/2016' 或 '2016-07-29'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多