使用SQL在SQLite数据库中从double中提取月份和年份

时间:2017-05-22 23:49:33

标签: sql sqlite strftime

我需要从GivingDate中提取月份和年份作为整数。 GivingDate是在SQLite数据库中存储为TDateTime的C ++ double,用于正确排序。但是,strftime要求将日期作为string参数。

这是SQL语句(不起作用):

SELECT 
  GivingDate, 
  Amount, 
  strftime('%y', datetime(GivingDate, 'unixepoch')) as GivingYear,
  strftime('%m', datetime(GivingDate, 'unixepoch')) as GivingMonth 
FROM 
  FSBC_GivingInfo;

如何修改SQL语句以从SQLite数据库中的GivingMonth中提取GivingYearGivingDate的月份和年份?

2 个答案:

答案 0 :(得分:1)

如果您将时间戳作为TDateTime存储在数据库中,则必须先将其转换。例如:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import boto3

msg = MIMEMultipart()
new_body = "asdf"
text_part = MIMEText(new_body, _subtype="html")
msg.attach(text_part)

filename='abc.pdf'
msg["To"] = "amal@gmail.com"
msg["From"] = "amal@gmail.com"
s3_object = boto3.client('s3', 'us-west-2')
s3_object = s3_object.get_object(Bucket=‘bucket-name’, Key=filename)
body = s3_object['Body'].read()

part = MIMEApplication(body, filename)
part.add_header("Content-Disposition", 'attachment', filename=filename)
msg.attach(part)
ses_aws_client = boto3.client('ses', 'us-west-2')
ses_aws_client.send_raw_email(RawMessage={"Data" : msg.as_bytes()})

但是,最好将时间戳存储为https://sqlite.org/lang_datefunc.html

中列出的格式之一

(我建议朱利安日期或' YYYY-MM-DD HH:MM:SS'格式 - 两者都将正确排序)

答案 1 :(得分:-1)

我不知道如何创建你的sql表,但sql中的数据是以日期时间格式。你可以稍后编辑它: 首先让你的日期时间到c ++。然后在代码中编辑。

DateTime myDateTime = "your  sql datetime";
string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");