【问题标题】:Displaying SQL Column in date format from bigint从 bigint 以日期格式显示 SQL 列
【发布时间】:2013-10-08 01:47:14
【问题描述】:

如何以 bigint 的日期格式显示 SQL 列?

例如,我不想转换每一行

select dateadd(second, 1358523245140/1000+8*60*60,  '19700101') from tablename

【问题讨论】:

  • 那你在找什么?
  • 哈戈。我想要的是一个自动的 sql 查询,它以日期格式显示 bigint 列中的所有行。目前,我正在运行表格,然后选择每一行并像上面一样单独转换它。希望这是有道理的。所以我应该在 select 语句中创建过程。如果是,那么我正在看一个关于如何在程序中插入上述内容的示例。
  • "Click a Tick" 接受答案,因为某个答案确实解决了您的问题,或者对找到您的解决方案最有帮助(注意:您可以再次单击以撤消)。接受答案表明问题已得到解决,并且在寻找解决方案或寻找要解决的问题时节省了其他人的时间。

标签: sql sql-server tsql


【解决方案1】:

要以可识别的日期格式显示,只需在该计算之上添加所需的格式样式即可。例如

select
    dateadd(second, 1358523245140/1000+8*60*60,  '19700101') 
  , convert(varchar, dateadd(second, 1358523245140/1000+8*60*60,  '19700101') ,121)
;

第一列将显示为数据库默认格式(例如 January, 18 2013 23:34:05+0000),第二列将显示样式 121 (2013-01-18 23:34:05.000)

这些样式的表有很多可用,或者在 SQL 2012 中您可以使用 FORMAT()

例如http://msdn.microsoft.com/en-us/library/ms187928.aspx

http://www.sql-server-helper.com/sql-server-2012/format-function-vs-convert-function.aspx

ps:这里还有另一种将 13 位 unix 时间戳转换为 TSQL 日期时间的方法: Convert unix epoch timestamp to TSQL timestamp

【讨论】:

  • 顺便说一句,我假设当您坐在“我不想转换”时,您的意思是您不想将列更改为 datetime 或添加另一列。 (但是:可以使用计算列,因此您不必为每个查询都这样做)
  • 谢谢。那么我应该在过程中使用上述选择语句吗?目前,我每次运行表格并选择值(例如,1358523245140)然后转换它。我想在一个查询中为所有行显示它。此外,这些值的数量是 18,我每次都将其减少到 13。
  • 1358523245140 原来是 135852324514000000
  • 您的问题不是很详细 - 您可能想要编辑它?例如,没有提及过程或截断字段 - 所以这是对您真正想要的内容的猜测。好像你正在通过光标工作,所以我不确定你现在真正想要什么。您可以使用我建议的查询,但它如何与我从未见过的我不知道的过程一起使用。对不起。
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多